feat: Delete image swipes at once or one by one

a2cfcd4ca64c2a4213cc892a9b39a9b069c6c5b0

Cohee <18619528+Cohee1207@users.noreply.github.com>

2 files changed, +46 -2Showing whitespace changes
public/scripts/chats.js+37 -2
@@ -621,21 +621,56 @@ async function enlargeMessageImage() {
621621}
622622
623623async function deleteMessageImage() {
624624 const value = await callGenericPopup('<h3>Delete image from message?<br>This action can\'t be undone.</h3>', POPUP_TYPE.CONFIRM);TEXT, '', {
625+ okButton: t`Delete one`,
626+ customButtons: [
627+ {
628+ text: t`Delete all`,
629+ appendAtEnd: true,
630+ result: POPUP_RESULT.CUSTOM1,
631+ },
632+ {
633+ text: t`Cancel`,
634+ appendAtEnd: true,
635+ result: POPUP_RESULT.CANCELLED,
636+ },
637+ ],
638+ });
625639
626640 if (value !== POPUP_RESULT.AFFIRMATIVEvalue) {
627641 return;
628642 }
629643
630644 const mesBlock = $(this).closest('.mes');
631645 const mesId = mesBlock.attr('mesid');
632646 const message = chat[mesId];
647+
648+ let isLastImage = true;
649+
650+ if (Array.isArray(message.extra.image_swipes)) {
651+ const indexOf = message.extra.image_swipes.indexOf(message.extra.image);
652+ if (indexOf > -1) {
653+ message.extra.image_swipes.splice(indexOf, 1);
654+ isLastImage = message.extra.image_swipes.length === 0;
655+ if (!isLastImage) {
656+ const newIndex = Math.min(indexOf, message.extra.image_swipes.length - 1);
657+ message.extra.image = message.extra.image_swipes[newIndex];
658+ }
659+ }
660+ }
661+
662+ if (isLastImage || value === POPUP_RESULT.CUSTOM1) {
633663 delete message.extra.image;
634664 delete message.extra.inline_image;
635665 delete message.extra.title;
636666 delete message.extra.append_title;
667+ delete message.extra.image_swipes;
637668 mesBlock.find('.mes_img_container').removeClass('img_extra');
638669 mesBlock.find('.mes_img').attr('src', '');
670+ } else {
671+ appendMediaToMessage(message, mesBlock);
672+ }
673+
639674 await saveChatConditional();
640675}
641676
public/scripts/popup.js+9 -0
@@ -24,6 +24,15 @@ export const POPUP_RESULT = {
2424 AFFIRMATIVE: 1,
2525 NEGATIVE: 0,
2626 CANCELLED: null,
27+ CUSTOM1: 1001,
28+ CUSTOM2: 1002,
29+ CUSTOM3: 1003,
30+ CUSTOM4: 1004,
31+ CUSTOM5: 1005,
32+ CUSTOM6: 1006,
33+ CUSTOM7: 1007,
34+ CUSTOM8: 1008,
35+ CUSTOM9: 1009,
2736};
2837
2938/**