centralize handlers, allow multiple handlers per model
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
// this file is responsible for managing files within chats.
|
||||
|
||||
import { DATA_VERSION, ValidObject } from "../Utility/typeSafety";
|
||||
import StorageModel, { filePaths } from "../Global/storageModel";
|
||||
import {
|
||||
HandlerManager,
|
||||
createTimestamp,
|
||||
parseValidObject,
|
||||
stringify,
|
||||
} from "../Utility/utility";
|
||||
import StorageModel, { filePaths } from "../Global/storageModel";
|
||||
|
||||
import ChatModel from "../Chat/chatModel";
|
||||
import TaskModel from "./taskModel";
|
||||
@@ -18,7 +19,7 @@ export default class FileModel {
|
||||
|
||||
taskModel: TaskModel;
|
||||
|
||||
fileContentHandler: (fileContent: FileContent<string>) => void = () => {};
|
||||
fileContentHandlerManager: HandlerManager<FileContent<string>> = new HandlerManager();
|
||||
|
||||
// paths
|
||||
getBasePath = (): string[] => {
|
||||
@@ -63,7 +64,7 @@ export default class FileModel {
|
||||
if (didStore == false) return;
|
||||
|
||||
this.taskModel.handleFileContent(fileContent);
|
||||
this.fileContentHandler(fileContent);
|
||||
this.fileContentHandlerManager.trigger(fileContent);
|
||||
};
|
||||
|
||||
// methods
|
||||
@@ -133,11 +134,6 @@ export default class FileModel {
|
||||
);
|
||||
return fileContent;
|
||||
};
|
||||
|
||||
// other
|
||||
setFileContentHandler = (handler: (fileContent: FileContent<string>) => void): void => {
|
||||
this.fileContentHandler = handler;
|
||||
};
|
||||
|
||||
// init
|
||||
constructor(chatModel: ChatModel, storageModel: StorageModel) {
|
||||
|
||||
@@ -8,6 +8,7 @@ import FileModel, { FileContent } from "./fileModel";
|
||||
|
||||
import ChatModel from "../Chat/chatModel";
|
||||
import { Color } from "../../colors";
|
||||
import { HandlerManager } from "../Utility/utility";
|
||||
import StorageModel from "../Global/storageModel";
|
||||
import { v4 } from "uuid";
|
||||
|
||||
@@ -16,7 +17,8 @@ export default class TaskModel {
|
||||
chatModel: ChatModel;
|
||||
fileModel: FileModel;
|
||||
|
||||
boardHandler: (boardInfoFileContent: BoardInfoFileContent) => void = () => {};
|
||||
boardHandlerManager: HandlerManager<BoardInfoFileContent> =
|
||||
new HandlerManager();
|
||||
|
||||
// paths
|
||||
getBasePath = (): string[] => {
|
||||
@@ -78,9 +80,9 @@ export default class TaskModel {
|
||||
};
|
||||
|
||||
updateBoard = (boardInfoFileContent: BoardInfoFileContent): void => {
|
||||
this.boardHandler(boardInfoFileContent);
|
||||
this.storeBoard(boardInfoFileContent);
|
||||
this.chatModel.sendMessage("", boardInfoFileContent);
|
||||
this.boardHandlerManager.trigger(boardInfoFileContent);
|
||||
};
|
||||
|
||||
storeBoard = (boardInfoFileContent: BoardInfoFileContent): void => {
|
||||
@@ -163,13 +165,6 @@ export default class TaskModel {
|
||||
this.storageModel.removeRecursively(taskReferencePath);
|
||||
};
|
||||
|
||||
// other
|
||||
setBoardHandler = (
|
||||
handler: (boardInfoFileContent: BoardInfoFileContent) => void
|
||||
): void => {
|
||||
this.boardHandler = handler;
|
||||
};
|
||||
|
||||
// init
|
||||
constructor(
|
||||
storageModel: StorageModel,
|
||||
@@ -181,7 +176,7 @@ export default class TaskModel {
|
||||
this.storageModel = storageModel;
|
||||
|
||||
// handlers
|
||||
fileModel.setFileContentHandler(this.handleFileContent);
|
||||
fileModel.fileContentHandlerManager.addHandler(this.handleFileContent);
|
||||
}
|
||||
|
||||
// utility
|
||||
|
||||
Reference in New Issue
Block a user