From 870e27868bd1c807b759108e82bfa028045e093a Mon Sep 17 00:00:00 2001 From: marlon-erler Date: Tue, 9 Jul 2024 21:56:00 +0200 Subject: [PATCH] disable button to clear messages when chat empty --- dist/index.js | 16 +++++++++++++++- src/Model/chatModel.ts | 14 +++++++++++++- src/Views/chatOptionModal.tsx | 6 +++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/dist/index.js b/dist/index.js index ecf84d58..494501c1 100644 --- a/dist/index.js +++ b/dist/index.js @@ -363,6 +363,7 @@ cannotAddSecondaryChannel; cannotSetChannel; cannotUndoChannel; + cannotClearMessages; // init constructor(id = UUID()) { this.id = id; @@ -403,6 +404,10 @@ [this.primaryChannelInput, this.primaryChannel], () => this.primaryChannelInput.value == this.primaryChannel.value ); + this.cannotClearMessages = createProxyState( + [this.messages], + () => this.messages.value.size == 0 + ); } // general deleteSelf = () => { @@ -952,7 +957,16 @@ "bind:value": chat.encryptionKey, "set:type": inputType } - ))), /* @__PURE__ */ createElement("label", { class: "inline margin-0" }, /* @__PURE__ */ createElement("input", { type: "checkbox", "bind:checked": shouldShowKey }), translation.showKey)), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("div", { class: "flex-column gap" }, /* @__PURE__ */ createElement("button", { class: "danger", "on:click": chat.clearMessages }, translation.clearChatMessages, /* @__PURE__ */ createElement("span", { class: "icon" }, "delete_sweep")), /* @__PURE__ */ createElement("button", { class: "danger", "on:click": deleteChat }, translation.removeChat, /* @__PURE__ */ createElement("span", { class: "icon" }, "delete")))), /* @__PURE__ */ createElement("button", { "on:click": closeModal }, translation.close, /* @__PURE__ */ createElement("span", { class: "icon" }, "close")))); + ))), /* @__PURE__ */ createElement("label", { class: "inline margin-0" }, /* @__PURE__ */ createElement("input", { type: "checkbox", "bind:checked": shouldShowKey }), translation.showKey)), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("div", { class: "flex-column gap" }, /* @__PURE__ */ createElement( + "button", + { + class: "danger", + "on:click": chat.clearMessages, + "toggle:disabled": chat.cannotClearMessages + }, + translation.clearChatMessages, + /* @__PURE__ */ createElement("span", { class: "icon" }, "delete_sweep") + ), /* @__PURE__ */ createElement("button", { class: "danger", "on:click": deleteChat }, translation.removeChat, /* @__PURE__ */ createElement("span", { class: "icon" }, "delete")))), /* @__PURE__ */ createElement("button", { "on:click": closeModal }, translation.close, /* @__PURE__ */ createElement("span", { class: "icon" }, "close")))); } // src/Views/messageComposer.tsx diff --git a/src/Model/chatModel.ts b/src/Model/chatModel.ts index 159d6a07..7b7feaac 100644 --- a/src/Model/chatModel.ts +++ b/src/Model/chatModel.ts @@ -1,6 +1,13 @@ import * as React from "bloatless-react"; -import { UDN, chatIds, chats, isConnected, senderName, updateMailbox } from "../Model/model"; +import { + UDN, + chatIds, + chats, + isConnected, + senderName, + updateMailbox, +} from "../Model/model"; import { decryptString, encryptString } from "../cryptUtility"; import { Message } from "udn-frontend"; @@ -34,6 +41,7 @@ export class Chat { cannotAddSecondaryChannel: React.State; cannotSetChannel: React.State; cannotUndoChannel: React.State; + cannotClearMessages: React.State; // init constructor(id: string = React.UUID()) { @@ -90,6 +98,10 @@ export class Chat { [this.primaryChannelInput, this.primaryChannel], () => this.primaryChannelInput.value == this.primaryChannel.value ); + this.cannotClearMessages = React.createProxyState( + [this.messages], + () => this.messages.value.size == 0 + ); } // general diff --git a/src/Views/chatOptionModal.tsx b/src/Views/chatOptionModal.tsx index 629790f2..6e0b8b6a 100644 --- a/src/Views/chatOptionModal.tsx +++ b/src/Views/chatOptionModal.tsx @@ -130,7 +130,11 @@ export function ChatOptionModal(chat: Chat, isPresented: React.State) {
-