add dialog to confirm chat deletion

This commit is contained in:
marlon-erler
2026-10-02 18:32:22 +02:00
parent 6ec3355aeb
commit f05e5f8f00
6 changed files with 117 additions and 14 deletions
+52 -9
View File
@@ -480,7 +480,9 @@
showEncryptionKey: "Show encryption key", showEncryptionKey: "Show encryption key",
randomizeKey: "Randomize", randomizeKey: "Randomize",
setColorButtonAudioLabel: "set color", setColorButtonAudioLabel: "set color",
deleteChatButton: "Delete entire chat" deleteChatButton: "Delete entire chat",
deleteChatHeadline: "Delete chat?",
deleteChatDescription: "This will delete all messages, tasks, and other data related to this chat from device."
}, },
message: { message: {
messagesHeadline: "Messages", messagesHeadline: "Messages",
@@ -746,7 +748,9 @@
showEncryptionKey: "Schl\xFCssel anzeigen", showEncryptionKey: "Schl\xFCssel anzeigen",
randomizeKey: "Zuf\xE4llig generieren", randomizeKey: "Zuf\xE4llig generieren",
setColorButtonAudioLabel: "Farbe festlegen", setColorButtonAudioLabel: "Farbe festlegen",
deleteChatButton: "Gesamten Chat l\xF6schen" deleteChatButton: "Gesamten Chat l\xF6schen",
deleteChatHeadline: "Gesamten Chat l\xF6schen?",
deleteChatDescription: "Dies l\xF6scht alle Nachrichten, Aufgaben und alle anderen Daten, die zu diesem Chat geh\xF6ren."
}, },
message: { message: {
messagesHeadline: "Nachrichten", messagesHeadline: "Nachrichten",
@@ -999,7 +1003,9 @@
showEncryptionKey: "Mostrar clave de encriptaci\xF3n", showEncryptionKey: "Mostrar clave de encriptaci\xF3n",
randomizeKey: "Aleatorizar", randomizeKey: "Aleatorizar",
setColorButtonAudioLabel: "establecer color", setColorButtonAudioLabel: "establecer color",
deleteChatButton: "Eliminar todo el chat" deleteChatButton: "Eliminar todo el chat",
deleteChatHeadline: "\xBFEliminar chat?",
deleteChatDescription: "\xBFQuieres borrar todas las mensajes, tareas y otros datos que pertenecen a este chat?"
}, },
message: { message: {
messagesHeadline: "Mensajes", messagesHeadline: "Mensajes",
@@ -6700,6 +6706,48 @@
); );
} }
// src/View/Components/confirmationDialog.tsx
function ConfirmationDialog(coreViewModel2, buttonLabel, icon, headline, description, action) {
const isModalOpen = new State(false);
function openModal() {
isModalOpen.value = true;
}
function closeModal() {
isModalOpen.value = false;
}
return /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement(
"button",
{
class: "danger width-100",
"on:click": openModal
},
/* @__PURE__ */ createElement("span", null, buttonLabel),
/* @__PURE__ */ createElement("span", { class: "icon" }, icon)
), /* @__PURE__ */ createElement(
"div",
{
class: "modal",
"toggle:open": isModalOpen
},
/* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("main", null, /* @__PURE__ */ createElement("h2", null, headline), /* @__PURE__ */ createElement("p", { class: "secondary" }, description)), /* @__PURE__ */ createElement("div", { class: "flex-row" }, /* @__PURE__ */ createElement(
"button",
{
class: "standard width-50",
"on:click": closeModal
},
coreViewModel2.translations.general.cancelButton
), /* @__PURE__ */ createElement(
"button",
{
class: "danger width-50",
"on:click": action
},
/* @__PURE__ */ createElement("span", null, buttonLabel),
/* @__PURE__ */ createElement("span", { class: "icon" }, icon)
)))
));
}
// src/View/ChatPages/settingsPage.tsx // src/View/ChatPages/settingsPage.tsx
function SettingsPage(coreViewModel2, settingsPageViewModel) { function SettingsPage(coreViewModel2, settingsPageViewModel) {
settingsPageViewModel.loadData(); settingsPageViewModel.loadData();
@@ -6796,12 +6844,7 @@
}, },
coreViewModel2.translations.general.setButton, coreViewModel2.translations.general.setButton,
/* @__PURE__ */ createElement("span", { class: "icon" }, "check") /* @__PURE__ */ createElement("span", { class: "icon" }, "check")
)), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("div", { class: "width-input" }, DangerousActionButton( )), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("div", { class: "width-input" }, ConfirmationDialog(coreViewModel2, coreViewModel2.translations.chatPage.settings.deleteChatButton, "delete_forever", coreViewModel2.translations.chatPage.settings.deleteChatHeadline, coreViewModel2.translations.chatPage.settings.deleteChatDescription, settingsPageViewModel.remove))))));
coreViewModel2,
coreViewModel2.translations.chatPage.settings.deleteChatButton,
"chat_error",
settingsPageViewModel.remove
))))));
} }
// src/View/Components/messageReactionFilterButton.tsx // src/View/Components/messageReactionFilterButton.tsx
Vendored
+1 -1
View File
@@ -1,4 +1,4 @@
const VERSION = "2610 Beta 21.20" const VERSION = "2610 Beta 21.24"
function processUrl(event) { function processUrl(event) {
const url = event.request.url; const url = event.request.url;
+1 -1
View File
@@ -1 +1 @@
2610 Beta 21.20 2610 Beta 21.24
+7 -3
View File
@@ -1,5 +1,5 @@
import { DeletableListItem } from "../Components/deletableListItem"; import { DeletableListItem } from "../Components/deletableListItem";
import { DangerousActionButton } from "../Components/dangerousActionButton"; import { ConfirmationDialog } from "../Components/confirmationDialog";
import { ColorPicker } from "../Components/colorPicker"; import { ColorPicker } from "../Components/colorPicker";
import * as React from "../../react"; import * as React from "../../react";
import SettingsPageViewModel from "../../ViewModel/Pages/settingsPageViewModel"; import SettingsPageViewModel from "../../ViewModel/Pages/settingsPageViewModel";
@@ -203,11 +203,15 @@ export function SettingsPage(
<hr></hr> <hr></hr>
<div class="width-input"> <div class="width-input">
{DangerousActionButton( {ConfirmationDialog(
coreViewModel, coreViewModel,
coreViewModel.translations.chatPage.settings coreViewModel.translations.chatPage.settings
.deleteChatButton, .deleteChatButton,
"chat_error", "delete_forever",
coreViewModel.translations.chatPage.settings
.deleteChatHeadline,
coreViewModel.translations.chatPage.settings
.deleteChatDescription,
settingsPageViewModel.remove, settingsPageViewModel.remove,
)} )}
</div> </div>
@@ -0,0 +1,47 @@
import * as React from "../../react";
import CoreViewModel from "../../ViewModel/Global/coreViewModel";
export function ConfirmationDialog(
coreViewModel: CoreViewModel,
buttonLabel: string,
icon: string,
headline: string,
description: string,
action: () => void,
) {
const isModalOpen = new React.State(false);
function openModal() {
isModalOpen.value = true;
}
function closeModal() {
isModalOpen.value = false;
}
return (
<div>
<button class="danger width-100" on:click={openModal}>
<span>{buttonLabel}</span>
<span class="icon">{icon}</span>
</button>
<div class="modal" toggle:open={isModalOpen}>
<div>
<main>
<h2>{headline}</h2>
<p class="secondary">{description}</p>
</main>
<div class="flex-row">
<button class="standard width-50" on:click={closeModal}>
{coreViewModel.translations.general.cancelButton}
</button>
<button class="danger width-50" on:click={action}>
<span>{buttonLabel}</span>
<span class="icon">{icon}</span>
</button>
</div>
</div>
</div>
</div>
);
}
+9
View File
@@ -244,6 +244,9 @@ const englishTranslations = {
setColorButtonAudioLabel: "set color", setColorButtonAudioLabel: "set color",
deleteChatButton: "Delete entire chat", deleteChatButton: "Delete entire chat",
deleteChatHeadline: "Delete chat?",
deleteChatDescription:
"This will delete all messages, tasks, and other data related to this chat from device.",
}, },
message: { message: {
@@ -618,6 +621,9 @@ export const allTranslations: {
setColorButtonAudioLabel: "Farbe festlegen", setColorButtonAudioLabel: "Farbe festlegen",
deleteChatButton: "Gesamten Chat löschen", deleteChatButton: "Gesamten Chat löschen",
deleteChatHeadline: "Gesamten Chat löschen?",
deleteChatDescription:
"Dies löscht alle Nachrichten, Aufgaben und alle anderen Daten, die zu diesem Chat gehören.",
}, },
message: { message: {
@@ -965,6 +971,9 @@ export const allTranslations: {
setColorButtonAudioLabel: "establecer color", setColorButtonAudioLabel: "establecer color",
deleteChatButton: "Eliminar todo el chat", deleteChatButton: "Eliminar todo el chat",
deleteChatHeadline: "¿Eliminar chat?",
deleteChatDescription:
"¿Quieres borrar todas las mensajes, tareas y otros datos que pertenecen a este chat?",
}, },
message: { message: {