42 lines
912 B
TypeScript
42 lines
912 B
TypeScript
import { create } from "zustand";
|
|
import { socket } from "../(dispatch)/socket";
|
|
|
|
interface ConnectionStore {
|
|
isConnected: boolean;
|
|
selectedZone: string;
|
|
connect: (
|
|
uid: string,
|
|
selectedZone: string,
|
|
logoffTime: string,
|
|
) => Promise<void>;
|
|
disconnect: () => void;
|
|
}
|
|
|
|
export const connectionStore = create<ConnectionStore>((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 });
|
|
});
|