From aad01f74b49c528eb12fd8b1488d722a046fb512 Mon Sep 17 00:00:00 2001 From: Sebastian Martinez Date: Tue, 1 Feb 2022 17:36:22 +0100 Subject: [PATCH] Improve reactivity and UX of pending anchors Signed-off-by: Sebastian Martinez --- src/base/orgs/View.svelte | 2 +- src/base/orgs/View/Anchor.svelte | 46 ++++++++++++++++++++++-------- src/base/orgs/View/Projects.svelte | 22 +++++++------- 3 files changed, 45 insertions(+), 25 deletions(-) diff --git a/src/base/orgs/View.svelte b/src/base/orgs/View.svelte index ca5be5fd8..964cc1238 100644 --- a/src/base/orgs/View.svelte +++ b/src/base/orgs/View.svelte @@ -331,7 +331,7 @@ {/await} - + {/await} {:else} diff --git a/src/base/orgs/View/Anchor.svelte b/src/base/orgs/View/Anchor.svelte index 05ba210f1..8c6b3de6b 100644 --- a/src/base/orgs/View/Anchor.svelte +++ b/src/base/orgs/View/Anchor.svelte @@ -30,31 +30,32 @@ const dispatch = createEventDispatcher(); let state = State.Idle; + let error: string | null = null; let action: null | Action = null; - const isSigned = project.confirmations.includes( - ethers.utils.getAddress(account) - ); + const close = () => { action = null; state = State.Idle; - // Could eventually be a separate function if we want to handle a Cancel event differently. - dispatch("success"); }; + const pending = safe.threshold - project.confirmations.length; const executeTransaction = async (safeTxHash: string) => { try { action = Action.Execute; - state = State.Confirm; + state = State.Signing; const txResult = await utils.executeSignedSafeTransaction(safe.address, safeTxHash, config); state = State.Submitting; await txResult.transactionResponse?.wait(); state = State.Success; - } catch (err) { + } catch (err: any) { console.error(err); + error = err.message; + state = State.Failed; } }; + const confirmAnchor = async (safeTxHash: string) => { try { action = Action.Sign; @@ -65,11 +66,16 @@ await config.safe.client?.confirmTransaction(safeTxHash, signature.data); state = State.Success; - } catch (err) { + } catch (err: any) { console.error(err); + error = err.message; state = State.Failed; } }; + + $: isSigned = project.confirmations.includes( + ethers.utils.getAddress(account) + );