53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import { messagesMock as initialMessagesMock } from '../mocks/mock-signature/messagesMock.js';
|
|
|
|
// Store singleton for messages
|
|
class MessageStore {
|
|
private readonly STORAGE_KEY = 'chat_messages';
|
|
private messages: any[] = [];
|
|
|
|
constructor() {
|
|
this.messages = this.loadFromLocalStorage() || [];
|
|
}
|
|
|
|
private loadFromLocalStorage() {
|
|
try {
|
|
const stored = localStorage.getItem(this.STORAGE_KEY);
|
|
return stored ? JSON.parse(stored) : null;
|
|
} catch (error) {
|
|
console.error('Error loading messages:', error);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
getMessages() {
|
|
return this.messages;
|
|
}
|
|
|
|
setMessages(messages: any[]) {
|
|
this.messages = messages;
|
|
this.saveToLocalStorage();
|
|
}
|
|
|
|
private saveToLocalStorage() {
|
|
try {
|
|
localStorage.setItem(this.STORAGE_KEY, JSON.stringify(this.messages));
|
|
} catch (error) {
|
|
console.error('Error saving messages:', error);
|
|
}
|
|
}
|
|
|
|
addMessage(memberId: string | number, message: any) {
|
|
const memberMessages = this.messages.find(m => String(m.memberId) === String(memberId));
|
|
if (memberMessages) {
|
|
memberMessages.messages.push(message);
|
|
} else {
|
|
this.messages.push({
|
|
memberId: String(memberId),
|
|
messages: [message]
|
|
});
|
|
}
|
|
this.saveToLocalStorage();
|
|
}
|
|
}
|
|
|
|
export const messageStore = new MessageStore(); |