Files
calchat/apps/client/src/stores/ChatStore.ts
Linus Waldowsky 489c0271c9 refactor: rename package scope from @caldav to @calchat
Rename all workspace packages to reflect the actual project name:
- @caldav/client -> @calchat/client
- @caldav/server -> @calchat/server
- @caldav/shared -> @calchat/shared
- Root package: caldav-mono -> calchat-mono

Update all import statements across client and server to use the new
package names. Update default MongoDB database name and logging service
identifier accordingly.
2026-01-12 19:46:53 +01:00

52 lines
1.4 KiB
TypeScript

import { create } from "zustand";
import { ChatMessage, ProposedEventChange } from "@calchat/shared";
type BubbleSide = "left" | "right";
export type MessageData = {
id: string;
side: BubbleSide;
content: string;
proposedChanges?: ProposedEventChange[];
conversationId?: string;
};
interface ChatState {
messages: MessageData[];
addMessages: (messages: MessageData[]) => void;
addMessage: (message: MessageData) => void;
updateMessage: (id: string, updates: Partial<MessageData>) => void;
clearMessages: () => void;
}
export const useChatStore = create<ChatState>((set) => ({
messages: [],
addMessages(messages) {
set((state) => ({ messages: [...state.messages, ...messages] }));
},
addMessage: (message: MessageData) => {
set((state) => ({ messages: [...state.messages, message] }));
},
updateMessage: (id: string, updates: Partial<MessageData>) => {
set((state) => ({
messages: state.messages.map((msg) =>
msg.id === id ? { ...msg, ...updates } : msg,
),
}));
},
clearMessages: () => {
set({ messages: [] });
},
}));
// Helper to convert server ChatMessage to client MessageData
export function chatMessageToMessageData(msg: ChatMessage): MessageData {
return {
id: msg.id,
side: msg.sender === "assistant" ? "left" : "right",
content: msg.content,
proposedChanges: msg.proposedChanges,
conversationId: msg.conversationId,
};
}