diff --git a/src/entities/chain/api/upsert.ts b/src/entities/chain/api/upsert.ts new file mode 100644 index 0000000..da6c6fa --- /dev/null +++ b/src/entities/chain/api/upsert.ts @@ -0,0 +1,13 @@ +import { chainSchema, type Chain } from "../schema"; +import { getAxios } from "@/shared/lib/getAxios"; + +export async function upsertChain(chain: Chain) { + const axios = getAxios(); + + try { + const response = await axios.post("/chain", chain); + return chainSchema.parse(response.data); + } catch { + return null; + } +} diff --git a/src/entities/chain/model.ts b/src/entities/chain/model.ts index fc33b5e..201169e 100644 --- a/src/entities/chain/model.ts +++ b/src/entities/chain/model.ts @@ -4,8 +4,15 @@ import type { Chain } from "./schema"; interface ChainState { chains?: Chain[]; setChains: (chains: Chain[]) => void; + addChain: (chain: Chain) => void; } export const useChainState = create((set) => ({ setChains: (chains) => set({ chains }), + + addChain: (chain) => + set((state) => { + if (!state.chains) return { chains: [chain] }; + return { chains: [...state.chains, chain] }; + }), }));