diff --git a/packages/create-invoice-form/CHANGELOG.md b/packages/create-invoice-form/CHANGELOG.md index 7c8a974d..302ca5b4 100644 --- a/packages/create-invoice-form/CHANGELOG.md +++ b/packages/create-invoice-form/CHANGELOG.md @@ -1,5 +1,11 @@ # @requestnetwork/create-invoice-form +## 0.11.10 + +### Patch Changes + +- Fix enbable decryption + ## 0.11.9 ### Patch Changes diff --git a/packages/create-invoice-form/package.json b/packages/create-invoice-form/package.json index 732b60e9..015bfff2 100644 --- a/packages/create-invoice-form/package.json +++ b/packages/create-invoice-form/package.json @@ -1,6 +1,6 @@ { "name": "@requestnetwork/create-invoice-form", - "version": "0.11.9", + "version": "0.11.10", "main": "./dist/web-component.umd.cjs", "scripts": { "dev": "vite dev", diff --git a/packages/create-invoice-form/src/lib/create-invoice-form.svelte b/packages/create-invoice-form/src/lib/create-invoice-form.svelte index 600f9939..d2eb5879 100644 --- a/packages/create-invoice-form/src/lib/create-invoice-form.svelte +++ b/packages/create-invoice-form/src/lib/create-invoice-form.svelte @@ -29,7 +29,7 @@ export let wagmiConfig: WagmiConfig; export let requestNetwork: RequestNetwork | null | undefined; export let currencies: CurrencyTypes.CurrencyInput[] = []; - let cipherProvider: CipherProviderTypes.ICipherProvider | undefined = requestNetwork?.getCipherProvider(); + let cipherProvider: CipherProviderTypes.ICipherProvider | undefined; let account: GetAccountReturnType; let isTimeout = false; @@ -115,6 +115,8 @@ totalAmount: 0, }; + $: cipherProvider = requestNetwork?.getCipherProvider(); + $: { if (wagmiConfig) { account = getAccount(wagmiConfig); diff --git a/packages/invoice-dashboard/CHANGELOG.md b/packages/invoice-dashboard/CHANGELOG.md index 3fcc8102..481aa043 100644 --- a/packages/invoice-dashboard/CHANGELOG.md +++ b/packages/invoice-dashboard/CHANGELOG.md @@ -1,5 +1,11 @@ # @requestnetwork/invoice-dashboard +## 0.11.8 + +### Patch Changes + +- Fix enbable decryption + ## 0.11.7 ### Patch Changes diff --git a/packages/invoice-dashboard/package.json b/packages/invoice-dashboard/package.json index 42c0c1ee..6b676096 100644 --- a/packages/invoice-dashboard/package.json +++ b/packages/invoice-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@requestnetwork/invoice-dashboard", - "version": "0.11.7", + "version": "0.11.8", "main": "./dist/web-component.umd.cjs", "scripts": { "dev": "vite dev", diff --git a/packages/invoice-dashboard/src/lib/view-requests.svelte b/packages/invoice-dashboard/src/lib/view-requests.svelte index d2001d19..868f2102 100644 --- a/packages/invoice-dashboard/src/lib/view-requests.svelte +++ b/packages/invoice-dashboard/src/lib/view-requests.svelte @@ -41,20 +41,23 @@ import { CurrencyManager } from "@requestnetwork/currency"; import { onDestroy, onMount, tick } from "svelte"; import { formatUnits } from "viem"; - import { debounce, formatAddress } from "../utils"; + import { debounce, formatAddress, getEthersSigner } from "../utils"; import { Drawer, InvoiceView } from "./dashboard"; import { getPaymentNetworkExtension } from "@requestnetwork/payment-detection"; import { CipherProviderTypes, CurrencyTypes } from "@requestnetwork/types"; - import { checkStatus } from "@requestnetwork/shared-utils/checkStatus"; + import { checkStatus } from "@requestnetwork/shared-utils/checkStatus"; + import { ethers } from "ethers"; export let config: IConfig; export let wagmiConfig: WagmiConfig; export let requestNetwork: RequestNetwork | null | undefined; export let currencies: CurrencyTypes.CurrencyInput[] = []; - let cipherProvider: CipherProviderTypes.ICipherProvider | undefined = requestNetwork?.getCipherProvider(); + let cipherProvider: CipherProviderTypes.ICipherProvider & { + getSessionSignatures: (signer: ethers.Signer, walletAddress: `0x${string}`) => Promise; + } | undefined; - let sliderValueForDecryption = cipherProvider?.isDecryptionEnabled() ? "on" : "off"; + let sliderValueForDecryption = JSON.parse(localStorage?.getItem('isDecryptionEnabled') ?? "false") ? "on" : "off"; let signer: `0x${string}` | undefined; let activeConfig = config ? config : defaultConfig; @@ -99,6 +102,7 @@ $: { if (account?.address) { tick().then(() => { + enableDecryption(); getRequests(); }); } @@ -128,6 +132,13 @@ if (typeof unwatchAccount === "function") unwatchAccount(); }); + $: cipherProvider = requestNetwork?.getCipherProvider() as CipherProviderTypes.ICipherProvider & { + getSessionSignatures: ( + signer: ethers.Signer, + walletAddress: `0x${string}` + ) => Promise; + }; + $: { signer = account?.address; } @@ -389,17 +400,31 @@ const handleRemoveSelectedRequest = () => { activeRequest = undefined; }; - - $: sliderValueForDecryption, getRequests(); - - $: { + const enableDecryption = async () => { + loading = true; if(sliderValueForDecryption === 'on') { - cipherProvider?.enableDecryption(true); + try { + const signer = await getEthersSigner(wagmiConfig); + if (signer && account?.address) { + await cipherProvider?.getSessionSignatures(signer, account.address); + cipherProvider?.enableDecryption(true); + localStorage?.setItem('isDecryptionEnabled', JSON.stringify(true)); + } + } catch (error) { + console.error("Failed to enable decryption:", error); + toast.error("Failed to enable decryption."); + loading = false; + return; + } } else { cipherProvider?.enableDecryption(false); + localStorage?.setItem('isDecryptionEnabled', JSON.stringify(false)); } + await getRequests(); + loading = false; } + $: sliderValueForDecryption, enableDecryption();