update chat page color when selecting board

This commit is contained in:
marlon-erler
2024-07-23 02:50:22 +02:00
parent e926fa758d
commit 958bbe3108
4 changed files with 62 additions and 16 deletions
+24 -6
View File
@@ -1412,7 +1412,9 @@
// src/ViewModel/Pages/taskPageViewModel.ts // src/ViewModel/Pages/taskPageViewModel.ts
var TaskPageViewModel = class { var TaskPageViewModel = class {
storageModel;
taskModel; taskModel;
chatViewModel;
// state // state
newBoardNameInput = new State(""); newBoardNameInput = new State("");
boardViewModels = new MapState(); boardViewModels = new MapState();
@@ -1442,9 +1444,11 @@
}; };
selectBoard = (boardViewModel) => { selectBoard = (boardViewModel) => {
this.selectedBoard.value = boardViewModel; this.selectedBoard.value = boardViewModel;
this.chatViewModel.displayedColor.value = boardViewModel.color.value;
}; };
closeBoard = () => { closeBoard = () => {
this.selectedBoard.value = void 0; this.selectedBoard.value = void 0;
this.chatViewModel.resetColor();
}; };
// load // load
loadData = () => { loadData = () => {
@@ -1457,8 +1461,10 @@
} }
}; };
// init // init
constructor(taskModel, storageModel2) { constructor(taskModel, storageModel2, chatViewModel) {
this.taskModel = taskModel; this.taskModel = taskModel;
this.storageModel = storageModel2;
this.chatViewModel = chatViewModel;
taskModel.boardHandlerManager.addHandler( taskModel.boardHandlerManager.addHandler(
(boardInfoFileContent) => { (boardInfoFileContent) => {
this.showBoardInList(boardInfoFileContent); this.showBoardInList(boardInfoFileContent);
@@ -1477,10 +1483,11 @@
messagePageViewModel; messagePageViewModel;
settingsPageViewModel; settingsPageViewModel;
// state // state
index = new State(0); displayedColor = new State("standard" /* Standard */);
selectedPage = new State( selectedPage = new State(
"messages" /* Messages */ "messages" /* Messages */
); );
index = new State(0);
// view // view
open = () => { open = () => {
this.chatListViewModel.openChat(this); this.chatListViewModel.openChat(this);
@@ -1488,6 +1495,12 @@
close = () => { close = () => {
this.chatListViewModel.closeChat(); this.chatListViewModel.closeChat();
}; };
closeSubPages = () => {
this.taskPageViewModel.closeBoard();
};
resetColor = () => {
this.displayedColor.value = this.settingsPageViewModel.color.value;
};
// load // load
loadPageSelection = () => { loadPageSelection = () => {
const path = StorageModel.getPath( const path = StorageModel.getPath(
@@ -1510,14 +1523,18 @@
this.chatListViewModel = chatListViewModel2; this.chatListViewModel = chatListViewModel2;
this.taskPageViewModel = new TaskPageViewModel( this.taskPageViewModel = new TaskPageViewModel(
this.chatModel.fileModel.taskModel, this.chatModel.fileModel.taskModel,
this.storageModel this.storageModel,
this
); );
this.messagePageViewModel = new MessagePageViewModel(this); this.messagePageViewModel = new MessagePageViewModel(this);
this.settingsPageViewModel = new SettingsPageViewModel(this); this.settingsPageViewModel = new SettingsPageViewModel(this);
chatModel.chatMessageHandlerManager.addHandler((chatMessage) => { chatModel.chatMessageHandlerManager.addHandler(
(chatMessage) => {
this.messagePageViewModel.showChatMessage(chatMessage); this.messagePageViewModel.showChatMessage(chatMessage);
}); }
);
this.loadPageSelection(); this.loadPageSelection();
this.resetColor();
} }
}; };
@@ -2021,6 +2038,7 @@
function ChatPage(chatViewModel) { function ChatPage(chatViewModel) {
const mainContent = new State(/* @__PURE__ */ createElement("div", null)); const mainContent = new State(/* @__PURE__ */ createElement("div", null));
chatViewModel.selectedPage.subscribe((selectedPage) => { chatViewModel.selectedPage.subscribe((selectedPage) => {
chatViewModel.closeSubPages();
switch (selectedPage) { switch (selectedPage) {
case "settings" /* Settings */: { case "settings" /* Settings */: {
mainContent.value = SettingsPage(chatViewModel.settingsPageViewModel); mainContent.value = SettingsPage(chatViewModel.settingsPageViewModel);
@@ -2039,7 +2057,7 @@
"article", "article",
{ {
id: "chat-page", id: "chat-page",
"set:color": chatViewModel.settingsPageViewModel.color, "set:color": chatViewModel.displayedColor,
class: "subtle-background" class: "subtle-background"
}, },
/* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("div", { id: "ribbon" }, /* @__PURE__ */ createElement( /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("div", { id: "ribbon" }, /* @__PURE__ */ createElement(
+3 -1
View File
@@ -14,6 +14,8 @@ export function ChatPage(chatViewModel: ChatViewModel) {
const mainContent = new React.State(<div></div>); const mainContent = new React.State(<div></div>);
chatViewModel.selectedPage.subscribe((selectedPage) => { chatViewModel.selectedPage.subscribe((selectedPage) => {
chatViewModel.closeSubPages();
switch (selectedPage) { switch (selectedPage) {
case ChatPageType.Settings: { case ChatPageType.Settings: {
mainContent.value = SettingsPage(chatViewModel.settingsPageViewModel); mainContent.value = SettingsPage(chatViewModel.settingsPageViewModel);
@@ -32,7 +34,7 @@ export function ChatPage(chatViewModel: ChatViewModel) {
return ( return (
<article <article
id="chat-page" id="chat-page"
set:color={chatViewModel.settingsPageViewModel.color} set:color={chatViewModel.displayedColor}
class="subtle-background" class="subtle-background"
> >
<div> <div>
+19 -6
View File
@@ -4,7 +4,7 @@ import ChatModel, { ChatMessage } from "../../Model/Chat/chatModel";
import StorageModel, { filePaths } from "../../Model/Global/storageModel"; import StorageModel, { filePaths } from "../../Model/Global/storageModel";
import ChatListViewModel from "./chatListViewModel"; import ChatListViewModel from "./chatListViewModel";
import { FileContent } from "../../Model/Files/fileModel"; import { Color } from "../../colors";
import MessagePageViewModel from "../Pages/messagePageViewModel"; import MessagePageViewModel from "../Pages/messagePageViewModel";
import SettingsPageViewModel from "../Pages/settingsPageViewModel"; import SettingsPageViewModel from "../Pages/settingsPageViewModel";
import SettingsViewModel from "../Global/settingsViewModel"; import SettingsViewModel from "../Global/settingsViewModel";
@@ -21,12 +21,13 @@ export default class ChatViewModel {
settingsPageViewModel: SettingsPageViewModel; settingsPageViewModel: SettingsPageViewModel;
// state // state
index: React.State<number> = new React.State(0); displayedColor: React.State<Color> = new React.State<Color>(Color.Standard);
selectedPage: React.State<ChatPageType> = new React.State<ChatPageType>( selectedPage: React.State<ChatPageType> = new React.State<ChatPageType>(
ChatPageType.Messages ChatPageType.Messages
); );
index: React.State<number> = new React.State(0);
// view // view
open = (): void => { open = (): void => {
this.chatListViewModel.openChat(this); this.chatListViewModel.openChat(this);
@@ -36,6 +37,14 @@ export default class ChatViewModel {
this.chatListViewModel.closeChat(); this.chatListViewModel.closeChat();
}; };
closeSubPages = (): void => {
this.taskPageViewModel.closeBoard();
}
resetColor = (): void => {
this.displayedColor.value = this.settingsPageViewModel.color.value;
};
// load // load
loadPageSelection = (): void => { loadPageSelection = (): void => {
const path: string[] = StorageModel.getPath( const path: string[] = StorageModel.getPath(
@@ -68,18 +77,22 @@ export default class ChatViewModel {
// page viewModels // page viewModels
this.taskPageViewModel = new TaskPageViewModel( this.taskPageViewModel = new TaskPageViewModel(
this.chatModel.fileModel.taskModel, this.chatModel.fileModel.taskModel,
this.storageModel this.storageModel,
this
); );
this.messagePageViewModel = new MessagePageViewModel(this); this.messagePageViewModel = new MessagePageViewModel(this);
this.settingsPageViewModel = new SettingsPageViewModel(this); this.settingsPageViewModel = new SettingsPageViewModel(this);
// handlers // handlers
chatModel.chatMessageHandlerManager.addHandler((chatMessage: ChatMessage) => { chatModel.chatMessageHandlerManager.addHandler(
(chatMessage: ChatMessage) => {
this.messagePageViewModel.showChatMessage(chatMessage); this.messagePageViewModel.showChatMessage(chatMessage);
}); }
);
// load // load
this.loadPageSelection(); this.loadPageSelection();
this.resetColor();
} }
} }
+14 -1
View File
@@ -6,13 +6,17 @@ import TaskModel, {
} from "../../Model/Files/taskModel"; } from "../../Model/Files/taskModel";
import BoardViewModel from "./boardViewModel"; import BoardViewModel from "./boardViewModel";
import ChatViewModel from "../Chat/chatViewModel";
import { FileContent } from "../../Model/Files/fileModel"; import { FileContent } from "../../Model/Files/fileModel";
import StorageModel from "../../Model/Global/storageModel"; import StorageModel from "../../Model/Global/storageModel";
import { checkMatchesObjectStructure } from "../../Model/Utility/typeSafety"; import { checkMatchesObjectStructure } from "../../Model/Utility/typeSafety";
export default class TaskPageViewModel { export default class TaskPageViewModel {
storageModel: StorageModel;
taskModel: TaskModel; taskModel: TaskModel;
chatViewModel: ChatViewModel;
// state // state
newBoardNameInput: React.State<string> = new React.State(""); newBoardNameInput: React.State<string> = new React.State("");
@@ -57,10 +61,12 @@ export default class TaskPageViewModel {
selectBoard = (boardViewModel: BoardViewModel): void => { selectBoard = (boardViewModel: BoardViewModel): void => {
this.selectedBoard.value = boardViewModel; this.selectedBoard.value = boardViewModel;
this.chatViewModel.displayedColor.value = boardViewModel.color.value;
}; };
closeBoard = (): void => { closeBoard = (): void => {
this.selectedBoard.value = undefined; this.selectedBoard.value = undefined;
this.chatViewModel.resetColor();
}; };
// load // load
@@ -78,8 +84,15 @@ export default class TaskPageViewModel {
}; };
// init // init
constructor(taskModel: TaskModel, storageModel: StorageModel) { constructor(
taskModel: TaskModel,
storageModel: StorageModel,
chatViewModel: ChatViewModel
) {
this.taskModel = taskModel; this.taskModel = taskModel;
this.storageModel = storageModel;
this.chatViewModel = chatViewModel;
// handlers // handlers
taskModel.boardHandlerManager.addHandler( taskModel.boardHandlerManager.addHandler(