Files
CT/src/Model/chatListModel.ts
T

47 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-07-20 04:43:16 +02:00
import StorageModel, { storageKeys } from "./storageModel";
import { ChatModel } from "./chatModel";
import { v4 } from "uuid";
export default class ChatListModel {
storageModel: StorageModel;
// data
chatModels = new Map<string, ChatModel>();
// store & add
2024-07-20 05:10:50 +02:00
addChatModel = (chatModel: ChatModel) => {
2024-07-20 04:43:16 +02:00
this.chatModels.set(chatModel.id, chatModel);
2024-07-20 05:10:50 +02:00
};
2024-07-20 04:43:16 +02:00
2024-07-20 05:10:50 +02:00
createChat = (primaryChannel: string): ChatModel => {
2024-07-20 04:43:16 +02:00
const id: string = v4();
2024-07-20 14:16:26 +02:00
const chatModel = new ChatModel(this.storageModel, this, id);
2024-07-20 04:43:16 +02:00
chatModel.setPrimaryChannel(primaryChannel);
this.addChatModel(chatModel);
2024-07-20 05:10:50 +02:00
return chatModel;
2024-07-20 04:43:16 +02:00
};
2024-07-20 05:10:50 +02:00
untrackChat = (chat: ChatModel): void => {
this.chatModels.delete(chat.id);
2024-07-20 04:43:16 +02:00
};
// restore
loadChats = (): void => {
const chatDir = storageKeys.chats;
2024-07-20 05:10:50 +02:00
const chatIds = this.storageModel.list(chatDir);
for (const chatId of chatIds) {
2024-07-20 14:16:26 +02:00
const chatModel = new ChatModel(this.storageModel, this, chatId);
2024-07-20 04:43:16 +02:00
this.addChatModel(chatModel);
}
};
// init
constructor(storageModel: StorageModel) {
this.storageModel = storageModel;
2024-07-20 05:10:50 +02:00
this.loadChats();
2024-07-20 04:43:16 +02:00
}
}