From e059427f8655a76f78b359d374667725566b1dbd Mon Sep 17 00:00:00 2001 From: marlon-erler Date: Fri, 12 Jul 2024 02:30:50 +0200 Subject: [PATCH] remember what view was used for chat objects --- dist/index.js | 15 +++++++++++---- src/Model/chatModel.ts | 8 ++++++++ src/Views/Objects/objectPane.tsx | 7 +++---- src/utility.tsx | 4 ++++ 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/dist/index.js b/dist/index.js index 33400ed9..df26498f 100644 --- a/dist/index.js +++ b/dist/index.js @@ -389,6 +389,9 @@ // src/utility.tsx var storageKeys = { + viewType(id) { + return id + "view-type"; + }, hasUnread(id) { return id + "has-unread-messages"; }, @@ -686,6 +689,7 @@ // src/Model/chatModel.ts var Chat = class { id; + viewType; isSubscribed = new State(false); primaryChannel = new State(""); hasUnreadMessages; @@ -709,6 +713,10 @@ // init constructor(id = UUID()) { this.id = id; + this.viewType = restoreState( + storageKeys.viewType(id), + "all" + ); this.primaryChannel = restoreState( storageKeys.primaryChannel(id), "" @@ -1716,10 +1724,9 @@ ); } ); - const selectedViewType = new State("all"); - const mainView = createProxyState([selectedViewType], () => { + const mainView = createProxyState([chat.viewType], () => { function getViewFunction() { - switch (selectedViewType.value) { + switch (chat.viewType.value) { case "notes": return NoteObjectsView; case "kanban": @@ -1745,7 +1752,7 @@ }, /* @__PURE__ */ createElement("span", { class: "icon" }, "add") ), /* @__PURE__ */ createElement("div", { class: "padding-sm flex flex-row gap justify-center scroll-h width-100" }, ...Object.keys(viewTypes).map( - (key) => ViewTypeToggle(key, selectedViewType) + (key) => ViewTypeToggle(key, chat.viewType) )), /* @__PURE__ */ createElement("button", { class: "height-100", disabled: true }, /* @__PURE__ */ createElement("span", { class: "icon" }, "visibility"))), /* @__PURE__ */ createElement("div", { class: "width-100 height-100 flex scroll-no", "children:set": mainView }), /* @__PURE__ */ createElement("div", { "children:set": objectModal })); } function ViewTypeToggle(key, selection) { diff --git a/src/Model/chatModel.ts b/src/Model/chatModel.ts index 9f4c0d75..04c9cc77 100644 --- a/src/Model/chatModel.ts +++ b/src/Model/chatModel.ts @@ -16,6 +16,7 @@ import { decryptString, encryptString } from "../cryptUtility"; import { Message } from "udn-frontend"; import { storageKeys } from "../utility"; import { translation } from "../translations"; +import { viewTypes } from "../Views/Objects/objectPane"; // TYPES // message @@ -50,6 +51,8 @@ export interface MessageObjectContent { export class Chat { id: string; + viewType: React.State; + isSubscribed = new React.State(false); primaryChannel = new React.State(""); hasUnreadMessages: React.State; @@ -78,6 +81,11 @@ export class Chat { constructor(id: string = React.UUID()) { this.id = id; + this.viewType = React.restoreState( + storageKeys.viewType(id), + "all" + ); + // channels this.primaryChannel = React.restoreState( storageKeys.primaryChannel(id), diff --git a/src/Views/Objects/objectPane.tsx b/src/Views/Objects/objectPane.tsx index 835a2cbb..7e223be3 100644 --- a/src/Views/Objects/objectPane.tsx +++ b/src/Views/Objects/objectPane.tsx @@ -33,10 +33,9 @@ export function ObjectPane(chat: Chat) { ); // view type - const selectedViewType = new React.State("all"); - const mainView = React.createProxyState([selectedViewType], () => { + const mainView = React.createProxyState([chat.viewType], () => { function getViewFunction() { - switch (selectedViewType.value) { + switch (chat.viewType.value) { case "notes": return NoteObjectsView; case "kanban": @@ -70,7 +69,7 @@ export function ObjectPane(chat: Chat) {
{...Object.keys(viewTypes).map((key: any) => - ViewTypeToggle(key, selectedViewType) + ViewTypeToggle(key, chat.viewType) )}
diff --git a/src/utility.tsx b/src/utility.tsx index 9979b4a5..52438025 100644 --- a/src/utility.tsx +++ b/src/utility.tsx @@ -1,6 +1,10 @@ import * as React from "bloatless-react"; export const storageKeys = { + viewType(id: string): string { + return id + "view-type"; + }, + hasUnread(id: string): string { return id + "has-unread-messages"; },