From 83340e239e5efa6d7e874314b6a225ecbf5337a7 Mon Sep 17 00:00:00 2001 From: samsiegart Date: Wed, 15 Sep 2021 21:49:13 -0700 Subject: [PATCH] feat(wallet): Add dismiss option for dapp connections --- .../dapp-svelte-wallet/ui/src/DappV2.svelte | 24 ++++++++++++------- .../dapp-svelte-wallet/ui/src/Requests.svelte | 11 +++++---- packages/dapp-svelte-wallet/ui/src/store.js | 5 ++++ 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/packages/dapp-svelte-wallet/ui/src/DappV2.svelte b/packages/dapp-svelte-wallet/ui/src/DappV2.svelte index 7f649e9f96f..c88abb95ba5 100644 --- a/packages/dapp-svelte-wallet/ui/src/DappV2.svelte +++ b/packages/dapp-svelte-wallet/ui/src/DappV2.svelte @@ -3,6 +3,8 @@ import TextField from 'smelte/src/components/TextField'; import Chip from '../lib/Chip.svelte'; import Request from './Request.svelte'; + + import { dismissedDapps, setDismissedDapps } from './store.js'; export let item; @@ -10,15 +12,18 @@ petname: origPetname, dappOrigin, origin } = item); let petname = item.petname || item.suggestedPetname; - const toggleDappEnabled = () => { - if (enable) { - E(E(actions).setPetname(petname)).disable(); - } else { - E(E(actions).setPetname(petname)).enable(); - } - }; + const dismiss = () => { + localStorage.setItem( + 'DismissedDapps', + JSON.stringify([...$dismissedDapps, dappOrigin || origin]), + ); + setDismissedDapps([...$dismissedDapps, dappOrigin || origin]); + } - const enableDapp = () => E(E(actions).setPetname(petname)).enable(); + const enableDapp = () => { + E(E(actions).setPetname(petname)).enable(); + dismiss(); + } const keydown = ev => { if (ev.key === 'Escape') { @@ -65,6 +70,9 @@ bind:value={petname} />
+ + Dismiss + Enable diff --git a/packages/dapp-svelte-wallet/ui/src/Requests.svelte b/packages/dapp-svelte-wallet/ui/src/Requests.svelte index 92337a450cf..2b3fc11fade 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, dismissedDapps } from './store'; export let classes = ''; @@ -13,9 +13,12 @@ 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); + $: incomingPayments = ($payments || []).filter((i) => + i.status !== 'deposited' && !hasAutoDeposit(i)); + $: offers = ($inbox || []).filter(({ status }) => + status === undefined || status === 'pending'); + $: dappConnections = ($dapps || []).filter(({ enable, dappOrigin, origin }) => + !enable && !$dismissedDapps.includes(dappOrigin || origin)) $: mappedPayments = incomingPayments.map((i) => { return { diff --git a/packages/dapp-svelte-wallet/ui/src/store.js b/packages/dapp-svelte-wallet/ui/src/store.js index 6d540390104..cbb73df1daf 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 [dismissedDapps, setDismissedDapps] = makeReadable( + JSON.parse(localStorage.getItem('DismissedDapps') || '[]'), +); export { ready, @@ -121,6 +124,8 @@ export { issuers, contacts, selfContact, + dismissedDapps, + setDismissedDapps, }; function cmp(a, b) {