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() {
621}621}
622622
623async function deleteMessageImage() {623async function deleteMessageImage() {
624 const value = await callGenericPopup('<h3>Delete image from message?<br>This action can\'t be undone.</h3>', POPUP_TYPE.CONFIRM);624 const value = await callGenericPopup('<h3>Delete image from message?<br>This action can\'t be undone.</h3>', POPUP_TYPE.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
626 if (value !== POPUP_RESULT.AFFIRMATIVE) {640 if (!value) {
627 return;641 return;
628 }642 }
629643
630 const mesBlock = $(this).closest('.mes');644 const mesBlock = $(this).closest('.mes');
631 const mesId = mesBlock.attr('mesid');645 const mesId = mesBlock.attr('mesid');
632 const message = chat[mesId];646 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) {
633 delete message.extra.image;663 delete message.extra.image;
634 delete message.extra.inline_image;664 delete message.extra.inline_image;
635 delete message.extra.title;665 delete message.extra.title;
636 delete message.extra.append_title;666 delete message.extra.append_title;
667 delete message.extra.image_swipes;
637 mesBlock.find('.mes_img_container').removeClass('img_extra');668 mesBlock.find('.mes_img_container').removeClass('img_extra');
638 mesBlock.find('.mes_img').attr('src', '');669 mesBlock.find('.mes_img').attr('src', '');
670 } else {
671 appendMediaToMessage(message, mesBlock);
672 }
673
639 await saveChatConditional();674 await saveChatConditional();
640}675}
641676
public/scripts/popup.js+9 -0
@@ -24,6 +24,15 @@ export const POPUP_RESULT = {
24 AFFIRMATIVE: 1,24 AFFIRMATIVE: 1,
25 NEGATIVE: 0,25 NEGATIVE: 0,
26 CANCELLED: null,26 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,
27};36};
2837
29/**38/**