handle new items through ViewModels
This commit is contained in:
@@ -20,7 +20,6 @@ export default class FileModel {
|
||||
|
||||
fileContentHandler: (fileContent: FileContent<string>) => void = () => {};
|
||||
|
||||
|
||||
// paths
|
||||
getBasePath = (): string[] => {
|
||||
return StorageModel.getPath(
|
||||
|
||||
@@ -16,6 +16,8 @@ export default class TaskModel {
|
||||
chatModel: ChatModel;
|
||||
fileModel: FileModel;
|
||||
|
||||
boardHandler: (boardInfoFileContent: BoardInfoFileContent) => void = () => {};
|
||||
|
||||
// paths
|
||||
getBasePath = (): string[] => {
|
||||
return this.fileModel.getModelContainerPath("taskModel");
|
||||
@@ -60,7 +62,7 @@ export default class TaskModel {
|
||||
};
|
||||
|
||||
handleBoard = (boardInfoFileContent: BoardInfoFileContent) => {
|
||||
this.storeBoard(boardInfoFileContent);
|
||||
this.updateBoard(boardInfoFileContent);
|
||||
};
|
||||
|
||||
handleTask = (taskFileContent: TaskFileContent) => {
|
||||
@@ -76,6 +78,7 @@ export default class TaskModel {
|
||||
};
|
||||
|
||||
updateBoard = (boardInfoFileContent: BoardInfoFileContent): void => {
|
||||
this.boardHandler(boardInfoFileContent);
|
||||
this.storeBoard(boardInfoFileContent);
|
||||
this.chatModel.sendMessage("", boardInfoFileContent);
|
||||
};
|
||||
@@ -160,6 +163,13 @@ export default class TaskModel {
|
||||
this.storageModel.removeRecursively(taskReferencePath);
|
||||
};
|
||||
|
||||
// other
|
||||
setBoardHandler = (
|
||||
handler: (boardInfoFileContent: BoardInfoFileContent) => void
|
||||
): void => {
|
||||
this.boardHandler = handler;
|
||||
};
|
||||
|
||||
// init
|
||||
constructor(
|
||||
storageModel: StorageModel,
|
||||
@@ -169,6 +179,9 @@ export default class TaskModel {
|
||||
this.chatModel = chatModel;
|
||||
this.fileModel = fileModel;
|
||||
this.storageModel = storageModel;
|
||||
|
||||
// handlers
|
||||
fileModel.setFileContentHandler(this.handleFileContent);
|
||||
}
|
||||
|
||||
// utility
|
||||
|
||||
@@ -77,11 +77,6 @@ export default class ChatViewModel {
|
||||
chatModel.setMessageHandler((chatMessage: ChatMessage) => {
|
||||
this.messagePageViewModel.showChatMessage(chatMessage);
|
||||
});
|
||||
chatModel.fileModel.setFileContentHandler(
|
||||
(fileContent: FileContent<string>) => {
|
||||
this.taskPageViewModel.handleFileContent(fileContent);
|
||||
}
|
||||
);
|
||||
|
||||
// load
|
||||
this.loadPageSelection();
|
||||
|
||||
@@ -16,7 +16,7 @@ export default class TaskPageViewModel {
|
||||
// state
|
||||
newBoardNameInput: React.State<string> = new React.State("");
|
||||
|
||||
boardViewModels: React.ListState<BoardViewModel> = new React.ListState();
|
||||
boardViewModels: React.MapState<BoardViewModel> = new React.MapState();
|
||||
|
||||
// guards
|
||||
cannotCreateBoard: React.State<boolean> = React.createProxyState(
|
||||
@@ -48,7 +48,7 @@ export default class TaskPageViewModel {
|
||||
// view
|
||||
showBoard = (boardInfo: BoardInfoFileContent): void => {
|
||||
const boardViewModel: BoardViewModel = new BoardViewModel(this, boardInfo);
|
||||
this.boardViewModels.add(boardViewModel);
|
||||
this.boardViewModels.set(boardInfo.fileId, boardViewModel);
|
||||
};
|
||||
|
||||
// load
|
||||
@@ -68,5 +68,10 @@ export default class TaskPageViewModel {
|
||||
// init
|
||||
constructor(taskModel: TaskModel, storageModel: StorageModel) {
|
||||
this.taskModel = taskModel;
|
||||
|
||||
// handlers
|
||||
taskModel.setBoardHandler((boardInfoFileContent: BoardInfoFileContent) => {
|
||||
this.showBoard(boardInfoFileContent);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user