From 3f28844dc816722cead410760fa41c45f20fe6c2 Mon Sep 17 00:00:00 2001 From: Sebastian Martinez Date: Fri, 15 Apr 2022 00:55:18 +0200 Subject: [PATCH] Flatten session store Signed-off-by: Sebastian Martinez --- src/base/faucet/Index.svelte | 8 ++++---- src/base/faucet/Withdraw.svelte | 2 +- src/session.ts | 22 +++++++--------------- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/base/faucet/Index.svelte b/src/base/faucet/Index.svelte index eb87f267d..c7df94943 100644 --- a/src/base/faucet/Index.svelte +++ b/src/base/faucet/Index.svelte @@ -32,7 +32,7 @@ if (!amount || amount === "0") { return [false, "Not able to withdraw zero tokens"]; } if (toWei(amount).gt(maxWithdrawAmount)) return [false, `Reduce amount, max withdrawal is ${formatEther(maxWithdrawAmount)}`]; let currentTime = new Date().getTime(); - let timelock = await calculateTimeLock(amount, $session.config.signer, config); + let timelock = await calculateTimeLock(amount, $session.signer, config); // Converting a 10 digit to 13 digit timestamp by multiplying by 1000 // since JS doesn't display a correct Date string when passing a 10 digit timestamp. let nextAvailableWithdraw = lastWithdrawal.add(timelock).mul(1000); @@ -46,10 +46,10 @@ return [false]; } } - + $: if ($session) { - getMaxWithdrawAmount($session.config.signer, config).then(x => maxWithdrawAmount = x); - lastWithdrawalByUser($session.config.signer, config).then(x => lastWithdrawal = x); + getMaxWithdrawAmount($session.signer, config).then(x => maxWithdrawAmount = x); + lastWithdrawalByUser($session.signer, config).then(x => lastWithdrawal = x); } diff --git a/src/base/faucet/Withdraw.svelte b/src/base/faucet/Withdraw.svelte index 68cdaac51..b67166ef7 100644 --- a/src/base/faucet/Withdraw.svelte +++ b/src/base/faucet/Withdraw.svelte @@ -25,7 +25,7 @@ try { if ($session) { state.status = Status.Signing; - const tx = await withdraw(amount, $session.config.signer, config); + const tx = await withdraw(amount, $session.signer, config); state.status = Status.Pending; await tx.wait(); state.status = Status.Success; diff --git a/src/session.ts b/src/session.ts index dd2a3cca9..91861572d 100644 --- a/src/session.ts +++ b/src/session.ts @@ -21,12 +21,7 @@ export type TxState = | { state: 'fail'; hash: string; blockHash: string; blockNumber: number; error: string } | null; -// Definitions made in `Config` that need to be part of the session, -// to provide reactivity based on events i.e. accountsChanged -// TODO: Eventually there will be more reactive config needs, e.g. seeds -export interface SessionConfig { - signer: ethers.Signer & TypedDataSigner | WalletConnectSigner | null; -} +export type Signer = ethers.Signer & TypedDataSigner | WalletConnectSigner; export type State = { connection: Connection.Disconnected } @@ -35,7 +30,7 @@ export type State = export interface Session { address: string; - config: SessionConfig; + signer: Signer | null; tokenBalance: BigNumber | null; // `null` means it isn't loaded yet. tx: TxState; } @@ -62,9 +57,8 @@ export const loadState = (initial: State): Store => { // Re-connect using previous session. if (config.metamask.connected) { const metamask = config.metamask.session; - const sessionConfig = { signer: config.signer }; const tokenBalance: BigNumber = await config.token.balanceOf(metamask.address); - const session = { tokenBalance, tx: null, config: sessionConfig, address: metamask.address }; + const session = { tokenBalance, tx: null, seeds: {}, signer: config.metamask.signer, address: metamask.address }; store.set({ connection: Connection.Connected, session }); config.setSigner(config.metamask.signer); @@ -88,8 +82,7 @@ export const loadState = (initial: State): Store => { config.walletConnect.state.set({ state: "close" }); const tokenBalance: BigNumber = await config.token.balanceOf(address); - const sessionConfig = { signer: config.signer }; - const session = { config: sessionConfig, address, tokenBalance, tx: null }; + const session = { address, signer: config.metamask.signer, seeds: {}, tokenBalance, tx: null }; store.set({ connection: Connection.Connected, @@ -111,9 +104,8 @@ export const loadState = (initial: State): Store => { const address = await signer.getAddress(); const tokenBalance: BigNumber = await config.token.balanceOf(address); - const sessionConfig = { signer: config.signer }; - const session = { config: sessionConfig, address, tokenBalance, tx: null }; - const network = await ethers.providers.getNetwork( + const session = { address, signer, seeds: {}, tokenBalance, tx: null }; + const network = ethers.providers.getNetwork( signer.walletConnect.chainId ); @@ -255,7 +247,7 @@ export const loadState = (initial: State): Store => { disconnectMetamask(); } else { s.session.address = address; - s.session.config = { signer: config.signer }; + s.session.signer = config.signer; saveSession(s.session); } return s;