From f237e2c037c0a625a17b88fe9a7ff0d1c7008b6e Mon Sep 17 00:00:00 2001 From: Uncle Fatso Date: Tue, 28 Apr 2026 13:15:52 +0300 Subject: [PATCH] put breakout and bridge logic to be a context Signed-off-by: Uncle Fatso --- package.json | 2 +- src/hooks/breakoutModal/index.jsx | 68 +++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 src/hooks/breakoutModal/index.jsx diff --git a/package.json b/package.json index ab05607..1fdba16 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ghost-dao-interface", "private": true, - "version": "0.7.22", + "version": "0.7.23", "type": "module", "scripts": { "dev": "vite", diff --git a/src/hooks/breakoutModal/index.jsx b/src/hooks/breakoutModal/index.jsx new file mode 100644 index 0000000..817293b --- /dev/null +++ b/src/hooks/breakoutModal/index.jsx @@ -0,0 +1,68 @@ +import { createContext, useContext, useState, useMemo } from "react"; +import { claim } from "../../hooks/staking"; + +const emptyFunction = () => {}; +const BreakoutModalContext = createContext(); +export const useBreakoutModal = () => useContext(BreakoutModalContext); + +export const BreakoutModalProvider = ({ children }) => { + const [isStakingOpened, setIsStakingOpened] = useState(false); + const [isClaimBondOpened, setIsClaimBondOpened] = useState(false); + const [activeTxIndex, setActiveTxIndexInner] = useState(-1); + const [warmupPeriod, setWarmupPeriod] = useState(0); + const [estimatedAmount, setEstimatedAmount] = useState(0); + const [defaultFunction, setDefaultFunction] = useState(emptyFunction); + const [executableFunction, setExecutableFunction] = useState(emptyFunction); + + const breakoutFromStaking = ({ defaultFunction, toExecute, amount, warmupLeft }) => { + setIsStakingOpened(true); + setWarmupPeriod(warmupLeft); + setEstimatedAmount(amount); + setExecutableFunction(() => () => toExecute); + setDefaultFunction(() => () => defaultFunction); + } + + const breakoutFromBonding = ({ defaultFunction, toExecute, amount, warmupLeft }) => { + setIsClaimBondOpened(true); + setWarmupPeriod(warmupLeft); + setEstimatedAmount(amount); + setExecutableFunction(() => () => toExecute); + setDefaultFunction(() => () => defaultFunction); + } + + const isOpened = useMemo(() => + isStakingOpened || isClaimBondOpened, + [isStakingOpened, isClaimBondOpened]); + + const closeModal = () => { + setIsStakingOpened(false); + setIsClaimBondOpened(false); + setWarmupPeriod(0); + setDefaultFunction(emptyFunction); + setExecutableFunction(emptyFunction); + } + + const setActiveTxIndex = (v) => { + console.log("here", v) + setActiveTxIndexInner(v) + } + + return ( + + {children} + + ) +}