diff --git a/apps/dispatch/app/_components/left/SituationBoard.tsx b/apps/dispatch/app/_components/left/SituationBoard.tsx new file mode 100644 index 00000000..e254efb2 --- /dev/null +++ b/apps/dispatch/app/_components/left/SituationBoard.tsx @@ -0,0 +1,45 @@ +"use client"; +import { useLeftMenuStore } from "_store/leftMenuStore"; +import { useSession } from "next-auth/react"; +import { cn } from "_helpers/cn"; +import { ListCollapse, Plane } from "lucide-react"; + +export const SituationBoard = () => { + const { setSituationTabOpen, situationTabOpen } = useLeftMenuStore(); + const session = useSession(); + + return ( +
+
+ +
+ {situationTabOpen && ( +
+
+
+

+ Einsatzliste +

+
+
+
+

+ Stations +

+
+
+
+ )} +
+ ); +}; diff --git a/apps/dispatch/app/_store/leftMenuStore.ts b/apps/dispatch/app/_store/leftMenuStore.ts index 91e0c364..6c613f0b 100644 --- a/apps/dispatch/app/_store/leftMenuStore.ts +++ b/apps/dispatch/app/_store/leftMenuStore.ts @@ -4,6 +4,8 @@ import { dispatchSocket } from "dispatch/socket"; import { pilotSocket } from "pilot/socket"; interface ChatStore { + situationTabOpen: boolean; + setSituationTabOpen: (open: boolean) => void; reportTabOpen: boolean; setReportTabOpen: (open: boolean) => void; ownId: null | string; @@ -12,10 +14,7 @@ interface ChatStore { setChatOpen: (open: boolean) => void; setSelectedChat: (chatId: string | null) => void; setOwnId: (id: string) => void; - chats: Record< - string, - { name: string; notification: boolean; messages: ChatMessage[] } - >; + chats: Record; setChatNotification: (userId: string, notification: boolean) => void; sendMessage: (userId: string, message: string) => Promise; addChat: (userId: string, name: string) => void; @@ -23,6 +22,8 @@ interface ChatStore { } export const useLeftMenuStore = create((set, get) => ({ + situationTabOpen: false, + setSituationTabOpen: (open: boolean) => set({ situationTabOpen: open }), reportTabOpen: false, setReportTabOpen: (open: boolean) => set({ reportTabOpen: open }), ownId: null, @@ -34,17 +35,13 @@ export const useLeftMenuStore = create((set, get) => ({ chats: {}, sendMessage: (userId: string, message: string) => { return new Promise((resolve, reject) => { - dispatchSocket.emit( - "send-message", - { userId, message }, - ({ error }: { error?: string }) => { - if (error) { - reject(error); - } else { - resolve(); - } - }, - ); + dispatchSocket.emit("send-message", { userId, message }, ({ error }: { error?: string }) => { + if (error) { + reject(error); + } else { + resolve(); + } + }); }); }, addChat: (userId, name) => { @@ -87,8 +84,7 @@ export const useLeftMenuStore = create((set, get) => ({ [userId]: { ...user, name: isSender ? message.receiverName : message.senderName, - notification: - !isSender && (state.selectedChat !== userId || !state.chatOpen), + notification: !isSender && (state.selectedChat !== userId || !state.chatOpen), messages: [...user.messages, message], // Neuen Zustand erzeugen }, }, @@ -106,12 +102,9 @@ dispatchSocket.on( store.addMessage(userId, message); }, ); -pilotSocket.on( - "chat-message", - ({ userId, message }: { userId: string; message: ChatMessage }) => { - const store = useLeftMenuStore.getState(); - console.log("chat-message", userId, message); - // Update the chat store with the new message - store.addMessage(userId, message); - }, -); +pilotSocket.on("chat-message", ({ userId, message }: { userId: string; message: ChatMessage }) => { + const store = useLeftMenuStore.getState(); + console.log("chat-message", userId, message); + // Update the chat store with the new message + store.addMessage(userId, message); +}); diff --git a/apps/dispatch/app/dispatch/page.tsx b/apps/dispatch/app/dispatch/page.tsx index c3618526..67e26728 100644 --- a/apps/dispatch/app/dispatch/page.tsx +++ b/apps/dispatch/app/dispatch/page.tsx @@ -6,6 +6,7 @@ import { cn } from "_helpers/cn"; import dynamic from "next/dynamic"; import { Chat } from "../_components/left/Chat"; import { Report } from "../_components/left/Report"; +import { SituationBoard } from "_components/left/SituationBoard"; const Map = dynamic(() => import("../_components/map/Map"), { ssr: false }); const DispatchPage = () => { @@ -20,6 +21,11 @@ const DispatchPage = () => {
+
+
+ +
+