update chain logic

This commit is contained in:
Robert 2024-03-08 21:19:37 +07:00
parent 243f7cb1f7
commit 4786cbcc45
No known key found for this signature in database
GPG Key ID: F631C7FD957D5F22

View File

@ -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<ChainState>((set, get) => ({
@ -26,4 +27,20 @@ export const useChainState = create<ChainState>((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),
],
};
}),
}));