From f193fa225c6e2e88b067d43e22b1fcc1230ebb98 Mon Sep 17 00:00:00 2001 From: Samuel Siegart Date: Thu, 16 Sep 2021 13:20:54 -0700 Subject: [PATCH] feat(wallet): Add dismiss option for dapp connections (#3836) * feat(wallet): Add dismiss option for dapp connections * feat(wallet): animate incoming requests * feat(wallet): Persist requests until manually closed --- .../dapp-svelte-wallet/ui/src/Balance.svelte | 4 +- .../dapp-svelte-wallet/ui/src/DappV2.svelte | 39 +++++---- .../ui/src/PaymentV2.svelte | 87 ++++++++++--------- .../dapp-svelte-wallet/ui/src/Request.svelte | 61 ++++++++++++- .../dapp-svelte-wallet/ui/src/Requests.svelte | 24 +++-- .../ui/src/TransactionV2.svelte | 18 ++-- packages/dapp-svelte-wallet/ui/src/store.js | 5 ++ 7 files changed, 158 insertions(+), 80 deletions(-) diff --git a/packages/dapp-svelte-wallet/ui/src/Balance.svelte b/packages/dapp-svelte-wallet/ui/src/Balance.svelte index 8b853a36653..0de4944ef89 100644 --- a/packages/dapp-svelte-wallet/ui/src/Balance.svelte +++ b/packages/dapp-svelte-wallet/ui/src/Balance.svelte @@ -21,8 +21,8 @@
icon + height="32px" + width="32px" />
{ - if (enable) { - E(E(actions).setPetname(petname)).disable(); - } else { - E(E(actions).setPetname(petname)).enable(); - } - }; - - const enableDapp = () => E(E(actions).setPetname(petname)).enable(); + const enableDapp = () => { + E(E(actions).setPetname(petname)).enable(); + } const keydown = ev => { if (ev.key === 'Escape') { @@ -45,7 +40,7 @@ } - + Incoming Dapp Connection @@ -59,14 +54,22 @@ Alleged user interface: {dappOrigin || origin} {/if}
-
+ {#if !enable} +
+ {/if}
- - Enable - + {#if enable} + + Enabled + + {:else} + + Enable + + {/if}
diff --git a/packages/dapp-svelte-wallet/ui/src/PaymentV2.svelte b/packages/dapp-svelte-wallet/ui/src/PaymentV2.svelte index 2328f5109cb..7d177fbb0df 100644 --- a/packages/dapp-svelte-wallet/ui/src/PaymentV2.svelte +++ b/packages/dapp-svelte-wallet/ui/src/PaymentV2.svelte @@ -11,6 +11,7 @@ import Tooltip from 'smelte/src/components/Tooltip'; export let item; + export let dismiss; let destination = null; @@ -56,53 +57,53 @@ } - + - {#if item.status === 'deposited'} - Deposited - {:else if item.issuer} - Incoming Payment - {/if} + Incoming Payment - - {#if item.lastAmount} - + {#if item.status === 'deposited'} + Deposited + {:else} + + {#if item.lastAmount} + + {:else} + + {/if} + + + {#if $purses} + + - - - -
- - - Deposit - - - - - -
-
- {:else} - Unknown brand. This payment cannot be verified. {/if}
diff --git a/packages/dapp-svelte-wallet/ui/src/Request.svelte b/packages/dapp-svelte-wallet/ui/src/Request.svelte index df139df0fa1..da2808fb02a 100644 --- a/packages/dapp-svelte-wallet/ui/src/Request.svelte +++ b/packages/dapp-svelte-wallet/ui/src/Request.svelte @@ -1,4 +1,8 @@
-
+
+
+ + {#if completed} +
+ {/if}
\ No newline at end of file diff --git a/packages/dapp-svelte-wallet/ui/src/Requests.svelte b/packages/dapp-svelte-wallet/ui/src/Requests.svelte index 92337a450cf..0a88496be6b 100644 --- a/packages/dapp-svelte-wallet/ui/src/Requests.svelte +++ b/packages/dapp-svelte-wallet/ui/src/Requests.svelte @@ -4,7 +4,7 @@ import DappV2 from './DappV2.svelte'; import PaymentV2 from './PaymentV2.svelte'; - import { inbox, dapps, payments, purses } from './store'; + import { inbox, dapps, payments, purses, dismissedRequests, setDismissedRequests } from './store'; export let classes = ''; @@ -13,9 +13,16 @@ p.brand === payment.brand && (p.depositBoardId || '').length ).length; - $: incomingPayments = ($payments || []).filter((i) => i.status !== 'deposited' && !hasAutoDeposit(i)); - $: offers = ($inbox || []).filter(({ status }) => status === undefined || status === 'pending'); - $: dappConnections = ($dapps || []).filter(({ enable }) => !enable); + const dismiss = (id) => { + localStorage.setItem( + 'DismissedRequests', + JSON.stringify([...$dismissedRequests, id])); + setDismissedRequests([...$dismissedRequests, id]); + } + + $: incomingPayments = ($payments || []).filter((i) => !hasAutoDeposit(i)); + $: offers = ($inbox || []); + $: dappConnections = ($dapps || []); $: mappedPayments = incomingPayments.map((i) => { return { @@ -39,7 +46,8 @@ }; }); - $: items = [...mappedPayments, ...mappedOffers, ...mappedDapps]; + $: items = [...mappedPayments, ...mappedOffers, ...mappedDapps] + .filter(({ id }) => !$dismissedRequests.includes(id)); - + Incoming Offer @@ -137,8 +141,8 @@
icon + height="32px" + width="32px" />
from @@ -152,8 +156,8 @@
icon + height="32px" + width="32px" />
into @@ -168,8 +172,8 @@ {#if feePursePetname} icon + height="32px" + width="32px" /> {/if}
diff --git a/packages/dapp-svelte-wallet/ui/src/store.js b/packages/dapp-svelte-wallet/ui/src/store.js index 6d540390104..e41b6deba9d 100644 --- a/packages/dapp-svelte-wallet/ui/src/store.js +++ b/packages/dapp-svelte-wallet/ui/src/store.js @@ -111,6 +111,9 @@ const [payments, setPayments] = makeReadable([]); const [contacts, setContacts] = makeReadable([]); const [selfContact, setSelfContact] = makeReadable(undefined); const [issuers, setIssuers] = makeReadable([]); +const [dismissedRequests, setDismissedRequests] = makeReadable( + JSON.parse(localStorage.getItem('DismissedRequests') || '[]'), +); export { ready, @@ -121,6 +124,8 @@ export { issuers, contacts, selfContact, + dismissedRequests, + setDismissedRequests, }; function cmp(a, b) {