import { writable } from 'svelte/store'; // Helper function to determine if we're running on the client side (browser) or server side. function isClientSide() { return typeof window !== "undefined"; } // Safely get item from localStorage function getFromLocalStorage(key, defaultValue) { if (isClientSide()) { return localStorage.getItem(key) ? JSON.parse(localStorage.getItem(key)) : defaultValue; } return defaultValue; } // Safely set item to localStorage function setToLocalStorage(key, value) { if (isClientSide()) { localStorage.setItem(key, JSON.stringify(value)); } } // Define the updated Message interface export interface Message { text: string; timestamp: string; sender: string; type: string; composite?: object | null; // New field } // Load messages from localStorage or set an empty array if not available const initialMessages = getFromLocalStorage('chat-messages', []); // Convert the array to a writable store export const messages = writable(initialMessages); // Subscribe to messages store to watch for changes and save them to localStorage messages.subscribe(currentMessages => { setToLocalStorage('chat-messages', currentMessages); }); export function createMessage(messageData) { const currentDate = new Date().toLocaleString(); const newMessageObj = { text: messageData.text, timestamp: currentDate, sender: messageData.sender, type: messageData.type, composite: messageData.composite || null // New field }; messages.update(oldMessages => [...oldMessages, newMessageObj]); } export function clearMessages() { messages.set([]); } // Dummy messages export const messagesList: Message[] = [ { text: "Hello there!", timestamp: new Date().toLocaleString(), sender: "John", type: "text" }, { text: "How are you?", timestamp: new Date().toLocaleString(), sender: "Alice", type: "text" }, // Add more dummy messages here with the timestamp and sender properties ];