diff --git a/packages/taler-wallet-webextension/src/pages/popup.stories.tsx b/packages/taler-wallet-webextension/src/pages/popup.stories.tsx index e9202fbea..5e1d0c3a2 100644 --- a/packages/taler-wallet-webextension/src/pages/popup.stories.tsx +++ b/packages/taler-wallet-webextension/src/pages/popup.stories.tsx @@ -72,7 +72,7 @@ const exampleData = { summary: 'the summary', fulfillmentMessage: '', }, - proposalId: '#proposalId', + proposalId: '1EMJJH8EP1NX3XF7733NCYS2DBEJW4Q2KA5KEB37MCQJQ8Q5HMC0', status: PaymentStatus.Accepted, } as TransactionPayment, deposit: { @@ -94,7 +94,7 @@ const exampleData = { refund: { ...commonTransaction, type: TransactionType.Refund, - refundedTransactionId: '#refundId', + refundedTransactionId: 'payment:1EMJJH8EP1NX3XF7733NCYS2DBEJW4Q2KA5KEB37MCQJQ8Q5HMC0', info: { contractTermsHash: 'ASDZXCASD', merchant: { diff --git a/packages/taler-wallet-webextension/src/pages/popup.tsx b/packages/taler-wallet-webextension/src/pages/popup.tsx index 4693c94c3..ea496ac0a 100644 --- a/packages/taler-wallet-webextension/src/pages/popup.tsx +++ b/packages/taler-wallet-webextension/src/pages/popup.tsx @@ -46,7 +46,7 @@ import { useEffect, useState } from "preact/hooks"; import * as i18n from "../i18n"; import { PageLink, renderAmount } from "../renderHtml"; import * as wxApi from "../wxApi"; -import { PermissionsCheckbox } from "./welcome"; +import { PermissionsCheckbox, useExtendedPermissions, Diagnostics } from "./welcome"; interface TabProps { target: string; @@ -452,7 +452,7 @@ export function WalletTransactionView({ transaction, onDelete, onBack }: WalletT function Pending() { if (!transaction?.pending) return null - return (pending...) + return (pending...) } function CommonFields() { @@ -503,7 +503,7 @@ export function WalletTransactionView({ transaction, onDelete, onBack }: WalletT return (
-

Payment ({transaction.proposalId})

+

Payment ({transaction.proposalId.substring(0, 10)}...)

To {transaction.info.merchant.name}

@@ -519,7 +519,7 @@ export function WalletTransactionView({ transaction, onDelete, onBack }: WalletT {transaction.info.products && transaction.info.products.length > 0 && Products -
    +
      {transaction.info.products.map(p =>
    1. {p.description}
    2. )}
    @@ -584,11 +584,12 @@ export function WalletTransactionView({ transaction, onDelete, onBack }: WalletT ); } + const TRANSACTION_FROM_REFUND = /[a-z]*:([\w]{10}).*/ if (transaction.type === TransactionType.Refund) { return (
    -

    Refund ({transaction.refundedTransactionId})

    +

    Refund ({TRANSACTION_FROM_REFUND.exec(transaction.refundedTransactionId)![1]}...)

    From {transaction.info.merchant.name}

    @@ -633,6 +634,8 @@ function WalletTransaction({ tid }: { tid: string }): JSX.Element { const ts = res.transactions.filter(t => t.transactionId === tid) if (ts.length === 1) { setTransaction(ts[0]); + } else { + route(Pages.history) } }; fetchData(); @@ -640,20 +643,55 @@ function WalletTransaction({ tid }: { tid: string }): JSX.Element { return wxApi.deleteTransaction(tid)} + onDelete={() => wxApi.deleteTransaction(tid).then(_ => history.go(-1))} onBack={() => { history.go(-1) }} /> } -class WalletSettings extends Component { - render(): JSX.Element { - return ( -
    -

    Permissions

    - -
    - ); - } +function WalletSettings() { + const [permissionsEnabled, togglePermissions] = useExtendedPermissions() + return ( +
    +

    Permissions

    + + {/* +

    Developer mode

    + + */} +
    + ); +} + + +export function DebugCheckbox({ enabled, onToggle }: { enabled: boolean, onToggle: () => void }): JSX.Element { + return ( +
    + + + + (Enabling this option below will make using the wallet faster, but + requires more permissions from your browser.) + +
    + ); } function reload(): void { @@ -685,6 +723,7 @@ function WalletDebug(props: any): JSX.Element {
    +
    ); } diff --git a/packages/taler-wallet-webextension/src/pages/welcome.tsx b/packages/taler-wallet-webextension/src/pages/welcome.tsx index cdc4913e4..808143189 100644 --- a/packages/taler-wallet-webextension/src/pages/welcome.tsx +++ b/packages/taler-wallet-webextension/src/pages/welcome.tsx @@ -29,7 +29,7 @@ import { extendedPermissions } from "../permissions"; import { WalletDiagnostics } from "@gnu-taler/taler-util"; import { Fragment, JSX } from "preact/jsx-runtime"; -function Diagnostics(): JSX.Element | null { +export function Diagnostics(): JSX.Element | null { const [timedOut, setTimedOut] = useState(false); const [diagnostics, setDiagnostics] = useState( undefined, @@ -128,29 +128,32 @@ async function handleExtendedPerm(isEnabled: boolean): Promise { return nextVal ?? false } -export function PermissionsCheckbox(): JSX.Element { - const [extendedPermissionsEnabled, setExtendedPermissionsEnabled] = useState(false); +export function useExtendedPermissions(): [boolean, () => void] { + const [enabled, setEnabled] = useState(false); - const togglePermission = () => { - setExtendedPermissionsEnabled(v => !v) - handleExtendedPerm(extendedPermissionsEnabled).then( result => { - setExtendedPermissionsEnabled(result) + const toggle = () => { + setEnabled(v => !v) + handleExtendedPerm(enabled).then( result => { + setEnabled(result) } ) } useEffect(() => { async function getExtendedPermValue(): Promise { const res = await wxApi.getExtendedPermissions(); - setExtendedPermissionsEnabled(res.newValue); + setEnabled(res.newValue); } getExtendedPermValue(); },[]); + return [enabled, toggle] +} +export function PermissionsCheckbox({enabled, onToggle}: {enabled:boolean, onToggle: () => void}): JSX.Element { return (

    Thank you for installing the wallet.

    Permissions

    - +

    Next Steps

    Try the demo ยป