import { create } from "zustand"; import { socket } from "../(dispatch)/socket"; interface ConnectionStore { isConnected: boolean; selectedZone: string; connect: ( uid: string, selectedZone: string, logoffTime: string, ) => Promise; disconnect: () => void; } export const connectionStore = create((set) => ({ isConnected: false, selectedZone: "LST_01", connect: async (uid, selectedZone, logoffTime) => new Promise((resolve) => { socket.auth = { uid }; set({ selectedZone }); socket.connect(); socket.once("connect", () => { socket.emit("connect-dispatch", { logoffTime, selectedZone, }); resolve(); }); }), disconnect: () => { socket.disconnect(); }, })); socket.on("connect", () => { connectionStore.setState({ isConnected: true }); }); socket.on("disconnect", () => { connectionStore.setState({ isConnected: false }); });