Add QR set rename button

4c1c62a56b1c9aff1d1a2d8a5a548866d546d119

Wolfsblvt <wolfsblvt@gmail.com>

2 files changed, +40 -0Showing whitespace changes
public/scripts/extensions/quick-reply/html/settings.html+1 -0
@@ -46,6 +46,7 @@
4646 <div class="qr--title" data-i18n="Edit Quick Replies">Edit Quick Replies</div>
4747 <div class="qr--actions">
4848 <select id="qr--set" class="text_pole"></select>
49+ <div class="qr--add menu_button menu_button_icon fa-solid fa-pencil" id="qr--set-rename" title="Rename quick reply set"></div>
4950 <div class="qr--add menu_button menu_button_icon fa-solid fa-plus" id="qr--set-new" title="Create new quick reply set"></div>
5051 <div class="qr--add menu_button menu_button_icon fa-solid fa-file-import" id="qr--set-import" title="Import quick reply set"></div>
5152 <input type="file" id="qr--set-importFile" accept=".json" hidden>
public/scripts/extensions/quick-reply/src/ui/SettingsUi.js+39 -0
@@ -111,6 +111,7 @@ export class SettingsUi {
111111
112112 prepareQrEditor() {
113113 // qr editor
114+ this.dom.querySelector('#qr--set-rename').addEventListener('click', async () => this.renameQrSet());
114115 this.dom.querySelector('#qr--set-new').addEventListener('click', async()=>this.addQrSet());
115116 /**@type {HTMLInputElement}*/
116117 const importFile = this.dom.querySelector('#qr--set-importFile');
@@ -303,6 +304,44 @@ export class SettingsUi {
303304 this.settings.save();
304305 }
305306
307+ async renameQrSet() {
308+ const newName = await callPopup('Enter new name for the Quick Reply Set:', 'input');
309+ if (newName && newName.length > 0) {
310+ const existingSet = QuickReplySet.get(newName);
311+ if (existingSet) {
312+ toastr.error(`A Quick Reply Set named "${newName}" already exists.`);
313+ return;
314+ }
315+ const oldName = this.currentQrSet.name;
316+ this.currentQrSet.name = newName;
317+ await this.currentQrSet.save();
318+
319+ // Update the option in all select dropdowns
320+ /** @type {NodeListOf<HTMLOptionElement>} */
321+ const options = this.dom.querySelectorAll(`#qr--set option[value="${oldName}"], select.qr--set option[value="${oldName}"]`);
322+ options.forEach(option => {
323+ option.value = newName;
324+ option.textContent = newName;
325+ });
326+
327+ // Update in in both set lists
328+ this.settings.config.setList.forEach(set => {
329+ if (set.set.name === oldName) {
330+ set.set.name = newName;
331+ }
332+ });
333+ this.settings.chatConfig?.setList.forEach(set => {
334+ if (set.set.name === oldName) {
335+ set.set.name = newName;
336+ }
337+ });
338+
339+ this.settings.save();
340+ this.currentSet.value = newName;
341+ console.info(`Quick Reply Set renamed from ""${oldName}" to "${newName}".`);
342+ }
343+ }
344+
306345 async addQrSet() {
307346 const name = await callPopup('Quick Reply Set Name:', 'input');
308347 if (name && name.length > 0) {