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 context menus
//TODO move advanced QR options into own UI class //TODO move advanced QR options into own UI class
//TODO slash commands //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 CRUD QRs and sets
//TODO easy way to set global and chat sets //TODO easy way to set global and chat sets

View File

@ -210,23 +210,26 @@ export class SettingsUi {
async deleteQrSet() { 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'); 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) { if (confirmed) {
await this.currentQrSet.delete(); await this.doDeleteQrSet(this.currentQrSet);
//HACK should just bubble up from QuickReplySet.delete() but that would require proper or at least more comples onDelete listeners this.rerender();
for (let i = this.settings.config.setList.length - 1; i >= 0; i--) { }
if (this.settings.config.setList[i].set == this.currentQrSet) { }
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); 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() { async addQrSet() {
@ -236,10 +239,13 @@ export class SettingsUi {
if (oldQrs) { 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'); 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) { if (replace) {
const idx = QuickReplySet.list.indexOf(oldQrs);
await this.doDeleteQrSet(oldQrs);
const qrs = new QuickReplySet(); const qrs = new QuickReplySet();
qrs.name = name; qrs.name = name;
qrs.addQuickReply(); qrs.addQuickReply();
QuickReplySet.list[QuickReplySet.list.indexOf(oldQrs)] = qrs; QuickReplySet.list.splice(idx, 0, qrs);
this.rerender();
this.currentSet.value = name; this.currentSet.value = name;
this.onQrSetChange(); this.onQrSetChange();
this.prepareGlobalSetList(); this.prepareGlobalSetList();