aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2023-06-02 14:32:52 -0300
committerSebastian <sebasjm@gmail.com>2023-06-02 14:32:52 -0300
commit81dd559c77908b7805690aa7fa1de54ce3a45580 (patch)
tree84d66deec9cca79e3f44d5b68219f4e928dc5a2a
parent1961f4744ca0db4666a2df4335c768ed86fc4e2f (diff)
pretty and suspend/resume option
-rw-r--r--packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts4
-rw-r--r--packages/taler-wallet-webextension/src/hooks/useSettings.ts2
-rw-r--r--packages/taler-wallet-webextension/src/platform/api.ts7
-rw-r--r--packages/taler-wallet-webextension/src/pwa/index.html75
-rw-r--r--packages/taler-wallet-webextension/src/pwa/manifest.json30
-rw-r--r--packages/taler-wallet-webextension/src/pwa/static/font/import.css20
-rw-r--r--packages/taler-wallet-webextension/src/wallet/ProviderDetail.stories.tsx6
-rw-r--r--packages/taler-wallet-webextension/src/wallet/Settings.tsx6
-rw-r--r--packages/taler-wallet-webextension/src/wallet/Transaction.tsx6
9 files changed, 82 insertions, 74 deletions
diff --git a/packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts b/packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts
index 7711498e1..fb9acbe83 100644
--- a/packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts
@@ -86,7 +86,9 @@ export function useComponentState({
onClick: pushAlertOnError(accept),
},
summary,
- expiration: expiration ? AbsoluteTime.fromProtocolTimestamp(expiration) : undefined,
+ expiration: expiration
+ ? AbsoluteTime.fromProtocolTimestamp(expiration)
+ : undefined,
cancel: {
onClick: pushAlertOnError(onClose),
},
diff --git a/packages/taler-wallet-webextension/src/hooks/useSettings.ts b/packages/taler-wallet-webextension/src/hooks/useSettings.ts
index 7e7b26a39..5c1ed7924 100644
--- a/packages/taler-wallet-webextension/src/hooks/useSettings.ts
+++ b/packages/taler-wallet-webextension/src/hooks/useSettings.ts
@@ -41,7 +41,7 @@ export const codecForSettings = (): Codec<Settings> =>
.property("langSelector", codecForBoolean())
.property("showJsonOnError", codecForBoolean())
.property("extendedAccountTypes", codecForBoolean())
- .property("deleteActiveTransactions", codecForBoolean())
+ .property("suspendIndividualTransaction", codecForBoolean())
.build("Settings");
const SETTINGS_KEY = buildStorageKey("wallet-settings", codecForSettings());
diff --git a/packages/taler-wallet-webextension/src/platform/api.ts b/packages/taler-wallet-webextension/src/platform/api.ts
index e3e97264d..49108fa63 100644
--- a/packages/taler-wallet-webextension/src/platform/api.ts
+++ b/packages/taler-wallet-webextension/src/platform/api.ts
@@ -108,10 +108,7 @@ export interface Settings extends WebexWalletConfig {
langSelector: boolean;
showJsonOnError: boolean;
extendedAccountTypes: boolean;
- //WORKAROUND
- //Able to delete tx in dev mode
- //FIXME: remove this when DD37 is implemented
- deleteActiveTransactions: boolean;
+ suspendIndividualTransaction: boolean;
}
export const defaultSettings: Settings = {
@@ -119,7 +116,7 @@ export const defaultSettings: Settings = {
advanceMode: false,
backup: false,
langSelector: false,
- deleteActiveTransactions: false,
+ suspendIndividualTransaction: false,
showJsonOnError: false,
extendedAccountTypes: false,
walletAllowHttp: false,
diff --git a/packages/taler-wallet-webextension/src/pwa/index.html b/packages/taler-wallet-webextension/src/pwa/index.html
index abc6f97ba..4ffbe5205 100644
--- a/packages/taler-wallet-webextension/src/pwa/index.html
+++ b/packages/taler-wallet-webextension/src/pwa/index.html
@@ -7,11 +7,11 @@
position: absolute;
top: 0px;
display: none;
-width: 100%;
-height: 100%;
-background-color: rgba(0,0,0,0.5);
-color:white;
-justify-content: center;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, 0.5);
+ color: white;
+ justify-content: center;
}
.overlay > iframe {
margin: auto;
@@ -21,21 +21,21 @@ justify-content: center;
<body>
<script>
function openPopup() {
- document.getElementById("popup-overlay").style.display = "flex"
+ document.getElementById("popup-overlay").style.display = "flex";
window.frames["popup"].location = "popup.html";
- window.frames["popup"]
+ window.frames["popup"];
}
function closePopup() {
- document.getElementById("popup-overlay").style.display = "none"
+ document.getElementById("popup-overlay").style.display = "none";
}
function redirectWallet(url) {
- window.frames["wallet"].location = url
+ window.frames["wallet"].location = url;
}
function openWallet() {
- redirectWallet("wallet.html")
+ redirectWallet("wallet.html");
}
function closeWallet() {
- redirectWallet("about:blank")
+ redirectWallet("about:blank");
}
function openPage() {
window.frames["other"].location =
@@ -46,7 +46,7 @@ justify-content: center;
<button value="asd" onclick="closeWallet();openWallet()">
reload wallet page
</button>
-<br />
+ <br />
<iframe
id="wallet-window"
name="wallet"
@@ -54,7 +54,7 @@ justify-content: center;
width="1000"
height="100%"
>
- </iframe>
+ </iframe>
<!-- <input id="page-url" type="text" />
<button onclick="openPage()">open</button> -->
<!-- <a
@@ -73,11 +73,11 @@ justify-content: center;
<hr />
<div class="overlay" id="popup-overlay">
<iframe
- id="popup-window"
- name="popup"
- src="about:blank"
- width="500"
- height="325"
+ id="popup-window"
+ name="popup"
+ src="about:blank"
+ width="500"
+ height="325"
>
</iframe>
</div>
@@ -85,25 +85,24 @@ justify-content: center;
<iframe src="tests.html" name="wallet" width="800" height="100%"> </iframe> -->
<!-- <hr />
<iframe src="stories.html" name="wallet" width="800" height="100%"> -->
- <script type="module" src="background.dev.js"></script>
- <script type="module">
- if ("serviceWorker" in navigator) {
- try {
- const registration = await navigator.serviceWorker.register("sw.js", {
- scope: "/app/",
- });
- if (registration.installing) {
- console.log("Service worker installing");
- } else if (registration.waiting) {
- console.log("Service worker installed");
- } else if (registration.active) {
- console.log("Service worker active");
- }
- } catch (error) {
- console.error(`Registration failed with ${error}`);
- }
+ <script type="module" src="background.dev.js"></script>
+ <script type="module">
+ if ("serviceWorker" in navigator) {
+ try {
+ const registration = await navigator.serviceWorker.register("sw.js", {
+ scope: "/app/",
+ });
+ if (registration.installing) {
+ console.log("Service worker installing");
+ } else if (registration.waiting) {
+ console.log("Service worker installed");
+ } else if (registration.active) {
+ console.log("Service worker active");
}
-
- </script>
- </body>
+ } catch (error) {
+ console.error(`Registration failed with ${error}`);
+ }
+ }
+ </script>
+ </body>
</html>
diff --git a/packages/taler-wallet-webextension/src/pwa/manifest.json b/packages/taler-wallet-webextension/src/pwa/manifest.json
index 6823483bf..adf27e43f 100644
--- a/packages/taler-wallet-webextension/src/pwa/manifest.json
+++ b/packages/taler-wallet-webextension/src/pwa/manifest.json
@@ -9,19 +9,23 @@
"start_url": "./",
"manifest_version": 3,
"minimum_chrome_version": "88",
- "icons": [{
- "src": "./static/img/taler-logo-48.png",
- "type": "image/png",
- "sizes": "48x48"
- },{
- "src": "./static/img/taler-logo-128.png",
- "type": "image/png",
- "sizes": "128x128"
- },{
- "src": "./static/img/taler-logo-512.png",
- "type": "image/png",
- "sizes": "512x512"
- }],
+ "icons": [
+ {
+ "src": "./static/img/taler-logo-48.png",
+ "type": "image/png",
+ "sizes": "48x48"
+ },
+ {
+ "src": "./static/img/taler-logo-128.png",
+ "type": "image/png",
+ "sizes": "128x128"
+ },
+ {
+ "src": "./static/img/taler-logo-512.png",
+ "type": "image/png",
+ "sizes": "512x512"
+ }
+ ],
"protocol_handlers": [
{
"protocol": "web+taler",
diff --git a/packages/taler-wallet-webextension/src/pwa/static/font/import.css b/packages/taler-wallet-webextension/src/pwa/static/font/import.css
index 05edddb51..d726ebc5a 100644
--- a/packages/taler-wallet-webextension/src/pwa/static/font/import.css
+++ b/packages/taler-wallet-webextension/src/pwa/static/font/import.css
@@ -1,35 +1,35 @@
@font-face {
- font-family: 'Roboto';
+ font-family: "Roboto";
font-style: italic;
font-weight: 400;
font-display: swap;
- src: url(/static/font/roboto-italic-400.ttf) format('truetype');
+ src: url(/static/font/roboto-italic-400.ttf) format("truetype");
}
@font-face {
- font-family: 'Roboto';
+ font-family: "Roboto";
font-style: normal;
font-weight: 300;
font-display: swap;
- src: url(/static/font/roboto-normal-300.ttf) format('truetype');
+ src: url(/static/font/roboto-normal-300.ttf) format("truetype");
}
@font-face {
- font-family: 'Roboto';
+ font-family: "Roboto";
font-style: normal;
font-weight: 400;
font-display: swap;
- src: url(/static/font/roboto-normal-400.ttf) format('truetype');
+ src: url(/static/font/roboto-normal-400.ttf) format("truetype");
}
@font-face {
- font-family: 'Roboto';
+ font-family: "Roboto";
font-style: normal;
font-weight: 500;
font-display: swap;
- src: url(/static/font/roboto-normal-500.ttf) format('truetype');
+ src: url(/static/font/roboto-normal-500.ttf) format("truetype");
}
@font-face {
- font-family: 'Roboto';
+ font-family: "Roboto";
font-style: normal;
font-weight: 700;
font-display: swap;
- src: url(/static/font/roboto-normal-700.ttf) format('truetype');
+ src: url(/static/font/roboto-normal-700.ttf) format("truetype");
}
diff --git a/packages/taler-wallet-webextension/src/wallet/ProviderDetail.stories.tsx b/packages/taler-wallet-webextension/src/wallet/ProviderDetail.stories.tsx
index cd6af6214..fbaa0b0ea 100644
--- a/packages/taler-wallet-webextension/src/wallet/ProviderDetail.stories.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/ProviderDetail.stories.tsx
@@ -19,7 +19,11 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { AbsoluteTime, TalerPreciseTimestamp, TalerProtocolTimestamp } from "@gnu-taler/taler-util";
+import {
+ AbsoluteTime,
+ TalerPreciseTimestamp,
+ TalerProtocolTimestamp,
+} from "@gnu-taler/taler-util";
import { ProviderPaymentType } from "@gnu-taler/taler-wallet-core";
import * as tests from "@gnu-taler/web-util/testing";
import { ProviderView as TestedComponent } from "./ProviderDetailPage.js";
diff --git a/packages/taler-wallet-webextension/src/wallet/Settings.tsx b/packages/taler-wallet-webextension/src/wallet/Settings.tsx
index e6c95182c..6ca443d10 100644
--- a/packages/taler-wallet-webextension/src/wallet/Settings.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/Settings.tsx
@@ -320,9 +320,9 @@ function AdvanceSettings(): VNode {
label: i18n.str`Show backup feature`,
description: i18n.str`Backup integration still in beta.`,
},
- deleteActiveTransactions: {
- label: i18n.str`Show delete active transaction`,
- description: i18n.str`Deleting active transaction is not safe and you may loose your coins.`,
+ suspendIndividualTransaction: {
+ label: i18n.str`Show suspend/resume transaction`,
+ description: i18n.str`Prevent transaction from doing network request.`,
},
extendedAccountTypes: {
label: i18n.str`Show more account types on deposit`,
diff --git a/packages/taler-wallet-webextension/src/wallet/Transaction.tsx b/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
index 7b4cf964f..d198893cd 100644
--- a/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
@@ -71,6 +71,7 @@ import { SafeHandler } from "../mui/handlers.js";
import { Pages } from "../NavigationBar.js";
import { assertUnreachable } from "../utils/index.js";
import { EnabledBySettings } from "../components/EnabledBySettings.js";
+import { useSettings } from "../hooks/useSettings.js";
interface Props {
tid: string;
@@ -203,6 +204,7 @@ function TransactionTemplate({
const [confirmBeforeForget, setConfirmBeforeForget] = useState(false);
const [confirmBeforeCancel, setConfirmBeforeCancel] = useState(false);
const { safely } = useAlertContext();
+ const [settings] = useSettings();
async function doCheckBeforeForget(): Promise<void> {
if (
@@ -393,7 +395,7 @@ function TransactionTemplate({
<i18n.Translate>Abort</i18n.Translate>
</Button>
)}
- {showResume && (
+ {showResume && settings.suspendIndividualTransaction && (
<Button
variant="contained"
onClick={safely("resume transaction", onResume)}
@@ -401,7 +403,7 @@ function TransactionTemplate({
<i18n.Translate>Resume</i18n.Translate>
</Button>
)}
- {showSuspend && (
+ {showSuspend && settings.suspendIndividualTransaction && (
<Button
variant="contained"
onClick={safely("suspend transaction", onSuspend)}