From 673fab414bbe147582d3c1f61712143934f8d571 Mon Sep 17 00:00:00 2001 From: marlon-erler Date: Fri, 12 Jul 2024 22:24:54 +0200 Subject: [PATCH] add option to clear suggestions --- dist/index.js | 23 +++++++++++++++++++---- src/Model/chatModel.ts | 7 +++++-- src/Model/model.ts | 12 ++++++++++++ src/Views/settingsModal.tsx | 18 +++++++++++++++++- src/translations.ts | 11 ++++++++++- 5 files changed, 63 insertions(+), 8 deletions(-) diff --git a/dist/index.js b/dist/index.js index ab6738ac..3e0e5946 100644 --- a/dist/index.js +++ b/dist/index.js @@ -440,6 +440,9 @@ zoomOut: "Zoom Out", zoomIn: "Zoom In", repairApp: "Repair App", + clearAddresses: "Clear previous connections", + clearCategories: "Clear suggestions for object categories", + clearStatuses: "Clear suggestions for object statuses", // overview overview: "Overview", connection: "Connection", @@ -536,6 +539,9 @@ zoomOut: "Alejar", zoomIn: "Acercar", repairApp: "Reparar Aplicaci\xF3n", + clearAddresses: "Borrar conexiones previas", + clearCategories: "Borrar sugerencias para categor\xEDas de objetos", + clearStatuses: "Borrar sugerencias para estados de objetos", // overview overview: "Resumen", connection: "Conexi\xF3n", @@ -630,6 +636,9 @@ zoomOut: "Verkleinern", zoomIn: "Vergr\xF6\xDFern", repairApp: "App reparieren", + clearAddresses: "Vorherige Verbindungen l\xF6schen", + clearCategories: "Vorschl\xE4ge f\xFCr Objektkategorien l\xF6schen", + clearStatuses: "Vorschl\xE4ge f\xFCr Objektstaten l\xF6schen", // overview overview: "\xDCbersicht", connection: "Verbindung", @@ -640,7 +649,7 @@ encryptionUnavailableMessage: "Lade diese app \xFCber HTTPS, um Nachrichten zu verschl\xFCsseln", serverAddress: "Serveradresse", serverAddressPlaceholder: "wss://192.168.0.69:3000", - previousConnections: "Vorherige Adressen", + previousConnections: "Vorherige Verbindungen", connectToServer: "Verbinden", disconnect: "Trennen", mailbox: "Briefkasten", @@ -847,7 +856,7 @@ if (selectedChat.value != this) this.hasUnreadMessages.value = true; }; handleMessageObject = (messageObject) => { - this.addObject(messageObject); + this.addObject(messageObject, true); }; // sending sendMessagesInOutbox = () => { @@ -946,7 +955,7 @@ addObjectContent = (messageObject, content) => { messageObject.contentVersions[content.id] = content; }; - addObject = (messageObject) => { + addObject = (messageObject, ignoreIfUnchanged = false) => { const existingObject = this.objects.value.get(messageObject.id); if (existingObject) { existingObject.title = messageObject.title; @@ -1266,6 +1275,12 @@ function removeSetDuplicates(listState) { listState.value = /* @__PURE__ */ new Set([...listState.value]); } + function clearCategories() { + usedObjectCategories.clear(); + } + function clearStatuses() { + usedObjectStatuses.clear(); + } var zoomStep = 10; function zoomOut() { pageZoom.value -= zoomStep; @@ -2311,7 +2326,7 @@ // src/Views/settingsModal.tsx function SettingsModal() { - return /* @__PURE__ */ createElement("div", { class: "modal", "toggle:open": isPresentingSettingsModal }, /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("main", null, /* @__PURE__ */ createElement("h2", null, translation.settings), /* @__PURE__ */ createElement("div", { class: "flex-row width-input gap" }, /* @__PURE__ */ createElement("button", { class: "width-100 flex justify-start", "on:click": zoomOut }, /* @__PURE__ */ createElement("span", { class: "icon" }, "zoom_out"), translation.zoomOut), /* @__PURE__ */ createElement("button", { class: "width-100 flex justify-start", "on:click": zoomIn }, /* @__PURE__ */ createElement("span", { class: "icon" }, "zoom_in"), translation.zoomIn)), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("div", { class: "flex-row width-input" }, /* @__PURE__ */ createElement("button", { class: "width-100 flex-1", "on:click": repairApp }, translation.repairApp, /* @__PURE__ */ createElement("span", { class: "icon" }, "handyman")))), /* @__PURE__ */ createElement("button", { class: "width-100", "on:click": toggleSettings }, translation.close, /* @__PURE__ */ createElement("span", { class: "icon" }, "close")))); + return /* @__PURE__ */ createElement("div", { class: "modal", "toggle:open": isPresentingSettingsModal }, /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("main", null, /* @__PURE__ */ createElement("h2", null, translation.settings), /* @__PURE__ */ createElement("div", { class: "flex-row width-input gap" }, /* @__PURE__ */ createElement("button", { class: "width-100 flex justify-start", "on:click": zoomOut }, /* @__PURE__ */ createElement("span", { class: "icon" }, "zoom_out"), translation.zoomOut), /* @__PURE__ */ createElement("button", { class: "width-100 flex justify-start", "on:click": zoomIn }, /* @__PURE__ */ createElement("span", { class: "icon" }, "zoom_in"), translation.zoomIn)), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("div", { class: "flex-column width-input" }, /* @__PURE__ */ createElement("button", { class: "width-100 flex-1", "on:click": repairApp }, translation.repairApp, /* @__PURE__ */ createElement("span", { class: "icon" }, "handyman"))), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("div", { class: "flex-column width-input gap" }, /* @__PURE__ */ createElement("button", { class: "width-100 flex-1", "on:click": clearCategories }, translation.clearCategories, /* @__PURE__ */ createElement("span", { class: "icon" }, icons.categoryName)), /* @__PURE__ */ createElement("button", { class: "width-100 flex-1", "on:click": clearStatuses }, translation.clearStatuses, /* @__PURE__ */ createElement("span", { class: "icon" }, icons.status)))), /* @__PURE__ */ createElement("button", { class: "width-100", "on:click": toggleSettings }, translation.close, /* @__PURE__ */ createElement("span", { class: "icon" }, "close")))); } // src/index.tsx diff --git a/src/Model/chatModel.ts b/src/Model/chatModel.ts index 557e6435..5197ddae 100644 --- a/src/Model/chatModel.ts +++ b/src/Model/chatModel.ts @@ -215,7 +215,7 @@ export class Chat { }; handleMessageObject = (messageObject: MessageObject): void => { - this.addObject(messageObject); + this.addObject(messageObject, true); }; // sending @@ -348,7 +348,10 @@ export class Chat { messageObject.contentVersions[content.id] = content; }; - addObject = (messageObject: MessageObject): void => { + addObject = ( + messageObject: MessageObject, + ignoreIfUnchanged: boolean = false + ): void => { const existingObject = this.objects.value.get(messageObject.id); if (existingObject) { existingObject.title = messageObject.title; diff --git a/src/Model/model.ts b/src/Model/model.ts index 06a12f46..656780d3 100644 --- a/src/Model/model.ts +++ b/src/Model/model.ts @@ -167,6 +167,18 @@ function removeSetDuplicates(listState: React.ListState) { listState.value = new Set([...listState.value]); } +export function clearAddresses() { + previousAddresses.clear(); +} + +export function clearCategories() { + usedObjectCategories.clear(); +} + +export function clearStatuses() { + usedObjectStatuses.clear(); +} + const zoomStep = 10; export function zoomOut() { pageZoom.value -= zoomStep; diff --git a/src/Views/settingsModal.tsx b/src/Views/settingsModal.tsx index ac01c142..55e7a7bf 100644 --- a/src/Views/settingsModal.tsx +++ b/src/Views/settingsModal.tsx @@ -1,6 +1,8 @@ import * as React from "bloatless-react"; import { + clearCategories, + clearStatuses, isPresentingSettingsModal, repairApp, toggleSettings, @@ -8,6 +10,7 @@ import { zoomOut, } from "../Model/model"; +import { icons } from "../icons"; import { translation } from "../translations"; export function SettingsModal() { @@ -30,12 +33,25 @@ export function SettingsModal() {
-
+
+ +
+ +
+ + +