mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-10-18 19:30:27 +08:00
Flatten session store
Signed-off-by: Sebastian Martinez <sebastinez@me.com>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
+7
-15
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user