diff --git a/src/entities/chain/model.ts b/src/entities/chain/model.ts index 4f7caa1..b6a7808 100644 --- a/src/entities/chain/model.ts +++ b/src/entities/chain/model.ts @@ -6,6 +6,7 @@ interface ChainState { setChains: (chains: Chain[]) => void; addChain: (chain: Chain) => void; getChain: (id: string) => Chain | null; + updateChain: (chain: Chain) => void; } export const useChainState = create((set, get) => ({ @@ -26,4 +27,20 @@ export const useChainState = create((set, get) => ({ return chain; }, + + updateChain: (chain) => + set((state) => { + const chains = state.chains; + if (!chains) return { chains: [chain] }; + const chainIndex = chains.findIndex((value) => value._id === chain._id); + + if (!chainIndex) return { chains: [...chains, chain] }; + return { + chains: [ + ...chains.slice(0, chainIndex), + chain, + ...chains.slice(chainIndex + 1), + ], + }; + }), }));