handle overwriting QR set

This commit is contained in:
LenAnderson 2023-12-20 18:12:54 +00:00
parent 3a9b163aca
commit c71a5bb82f
2 changed files with 20 additions and 15 deletions

View File

@ -15,7 +15,6 @@ import { SettingsUi } from './src/ui/SettingsUi.js';
//TODO context menus
//TODO move advanced QR options into own UI class
//TODO slash commands
//TODO handle replacing QR set (create->overwrite): update configs that use this set
//TODO easy way to CRUD QRs and sets
//TODO easy way to set global and chat sets

View File

@ -210,23 +210,26 @@ export class SettingsUi {
async deleteQrSet() {
const confirmed = await callPopup(`Are you sure you want to delete the Quick Reply Set "${this.currentQrSet.name}"? This cannot be undone.`, 'confirm');
if (confirmed) {
await this.currentQrSet.delete();
//HACK should just bubble up from QuickReplySet.delete() but that would require proper or at least more comples onDelete listeners
for (let i = this.settings.config.setList.length - 1; i >= 0; i--) {
if (this.settings.config.setList[i].set == this.currentQrSet) {
await this.doDeleteQrSet(this.currentQrSet);
this.rerender();
}
}
async doDeleteQrSet(qrs) {
await qrs.delete();
//TODO (HACK) should just bubble up from QuickReplySet.delete() but that would require proper or at least more comples onDelete listeners
for (let i = this.settings.config.setList.length - 1; i >= 0; i--) {
if (this.settings.config.setList[i].set == qrs) {
this.settings.config.setList.splice(i, 1);
}
}
if (this.settings.chatConfig) {
for (let i = this.settings.chatConfig.setList.length - 1; i >= 0; i--) {
if (this.settings.config.setList[i].set == qrs) {
this.settings.config.setList.splice(i, 1);
}
}
if (this.settings.chatConfig) {
for (let i = this.settings.chatConfig.setList.length - 1; i >= 0; i--) {
if (this.settings.config.setList[i].set == this.currentQrSet) {
this.settings.config.setList.splice(i, 1);
}
}
}
this.settings.save();
this.rerender();
}
this.settings.save();
}
async addQrSet() {
@ -236,10 +239,13 @@ export class SettingsUi {
if (oldQrs) {
const replace = await callPopup(`A Quick Reply Set named "${name}" already exists.\nDo you want to overwrite the existing Quick Reply Set?\nThe existing set will be deleted. This cannot be undone.`, 'confirm');
if (replace) {
const idx = QuickReplySet.list.indexOf(oldQrs);
await this.doDeleteQrSet(oldQrs);
const qrs = new QuickReplySet();
qrs.name = name;
qrs.addQuickReply();
QuickReplySet.list[QuickReplySet.list.indexOf(oldQrs)] = qrs;
QuickReplySet.list.splice(idx, 0, qrs);
this.rerender();
this.currentSet.value = name;
this.onQrSetChange();
this.prepareGlobalSetList();