diff --git a/frontend/app/src/services/TransactionFlow.tsx b/frontend/app/src/services/TransactionFlow.tsx index 712f9c6fe..9c49f7075 100644 --- a/frontend/app/src/services/TransactionFlow.tsx +++ b/frontend/app/src/services/TransactionFlow.tsx @@ -32,6 +32,7 @@ import { LOCAL_STORAGE_PREFIX } from "@/src/constants"; import { getContracts } from "@/src/contracts"; import { jsonParseWithDnum, jsonStringifyWithDnum } from "@/src/dnum-utils"; import { useAccount, useWagmiConfig } from "@/src/services/Ethereum"; +import { useStoredState } from "@/src/services/StoredState"; import { claimCollateralSurplus } from "@/src/tx-flows/claimCollateralSurplus"; import { closeLoanPosition } from "@/src/tx-flows/closeLoanPosition"; import { earnClaimRewards } from "@/src/tx-flows/earnClaimRewards"; @@ -225,6 +226,7 @@ type FlowArgs = { contracts: Contracts; request: FR; steps: FlowSteps | null; + storedState: ReturnType; wagmiConfig: ReturnType; }; @@ -368,6 +370,7 @@ function useSteps({ onSteps: (steps: string[]) => void; }) { const contracts = getContracts(); + const storedState = useStoredState(); const steps = useQuery({ enabled, @@ -387,6 +390,7 @@ function useSteps({ contracts, request: flow.request, steps: flow.steps, + storedState, wagmiConfig, }); }, @@ -502,6 +506,7 @@ function useTransactionExecution({ const account = useAccount(); const contracts = getContracts(); const wagmiConfig = useWagmiConfig(); + const storedState = useStoredState(); // step status updates const setStepToAwaitingSignature = () => { @@ -582,6 +587,7 @@ function useTransactionExecution({ contracts, request: flow.request, steps: flow.steps, + storedState, wagmiConfig, }); // check passed @@ -597,6 +603,7 @@ function useTransactionExecution({ contracts, flow, flowDeclaration, + storedState, wagmiConfig, ]); @@ -650,6 +657,7 @@ function useTransactionExecution({ contracts, request: flow.request, steps: flow.steps, + storedState, wagmiConfig, }); @@ -680,13 +688,11 @@ function useResetQueriesOnPathChange(condition: boolean) { useEffect(() => { // when the condition changes, set a flag to invalidate if (pathName === "/transactions" && condition) { - console.log("SETTING INVALIDATE ON PATH CHANGE"); invalidateOnPathChange.current = true; return; } // when the path changes, invalidate if the flag is set if (pathName !== "/transactions" && invalidateOnPathChange.current) { - console.log("CLEARING INVALIDATE ON PATH CHANGE"); queryClient.resetQueries(); invalidateOnPathChange.current = false; } @@ -699,10 +705,10 @@ const FlowContextStorage = { }, get(): FlowContext | null { try { - const storedState = (localStorage.getItem(TRANSACTION_FLOW_KEY) ?? "").trim(); - if (!storedState) return null; + const storedFlowState = (localStorage.getItem(TRANSACTION_FLOW_KEY) ?? "").trim(); + if (!storedFlowState) return null; - const { request, steps, account } = v.parse(FlowStateSchema, jsonParseWithDnum(storedState)); + const { request, steps, account } = v.parse(FlowStateSchema, jsonParseWithDnum(storedFlowState)); const declaration = getFlowDeclaration(request.flowId); const parsedRequest = declaration.parseRequest(request); let parsedSteps = v.parse(FlowStepsSchema, steps); diff --git a/frontend/app/src/tx-flows/openLeveragePosition.tsx b/frontend/app/src/tx-flows/openLeveragePosition.tsx index 4ab426cf0..80adacb86 100644 --- a/frontend/app/src/tx-flows/openLeveragePosition.tsx +++ b/frontend/app/src/tx-flows/openLeveragePosition.tsx @@ -305,7 +305,7 @@ export const openLeveragePosition: FlowDeclaration = { throw new Error("Not implemented"); }, - async postFlowCheck({ request, steps }) { + async postFlowCheck({ request, steps, storedState }) { const lastStep = steps?.at(-1); if (lastStep?.txStatus !== "post-check" || !isTroveId(lastStep.txReceiptData)) { @@ -315,7 +315,17 @@ export const openLeveragePosition: FlowDeclaration = { const prefixedTroveId = getPrefixedTroveId(request.loan.collIndex, lastStep.txReceiptData); while (true) { const { trove } = await graphQuery(TroveByIdQuery, { id: prefixedTroveId }); - if (trove !== null) return; + if (trove !== null) { + storedState.setState(({ loanModes }) => { + return { + loanModes: { + ...loanModes, + [prefixedTroveId]: "leverage", + }, + }; + }); + return; + } } }, };