diff --git a/public/scripts/chats.js b/public/scripts/chats.js
index 94ad882bb..32c8e93e5 100644
--- a/public/scripts/chats.js
+++ b/public/scripts/chats.js
@@ -621,21 +621,56 @@ async function enlargeMessageImage() {
}
async function deleteMessageImage() {
- const value = await callGenericPopup('
Delete image from message?
This action can\'t be undone.
', POPUP_TYPE.CONFIRM);
+ const value = await callGenericPopup('Delete image from message?
This action can\'t be undone.
', POPUP_TYPE.TEXT, '', {
+ okButton: t`Delete one`,
+ customButtons: [
+ {
+ text: t`Delete all`,
+ appendAtEnd: true,
+ result: POPUP_RESULT.CUSTOM1,
+ },
+ {
+ text: t`Cancel`,
+ appendAtEnd: true,
+ result: POPUP_RESULT.CANCELLED,
+ },
+ ],
+ });
- if (value !== POPUP_RESULT.AFFIRMATIVE) {
+ if (!value) {
return;
}
const mesBlock = $(this).closest('.mes');
const mesId = mesBlock.attr('mesid');
const message = chat[mesId];
- delete message.extra.image;
- delete message.extra.inline_image;
- delete message.extra.title;
- delete message.extra.append_title;
- mesBlock.find('.mes_img_container').removeClass('img_extra');
- mesBlock.find('.mes_img').attr('src', '');
+
+ let isLastImage = true;
+
+ if (Array.isArray(message.extra.image_swipes)) {
+ const indexOf = message.extra.image_swipes.indexOf(message.extra.image);
+ if (indexOf > -1) {
+ message.extra.image_swipes.splice(indexOf, 1);
+ isLastImage = message.extra.image_swipes.length === 0;
+ if (!isLastImage) {
+ const newIndex = Math.min(indexOf, message.extra.image_swipes.length - 1);
+ message.extra.image = message.extra.image_swipes[newIndex];
+ }
+ }
+ }
+
+ if (isLastImage || value === POPUP_RESULT.CUSTOM1) {
+ delete message.extra.image;
+ delete message.extra.inline_image;
+ delete message.extra.title;
+ delete message.extra.append_title;
+ delete message.extra.image_swipes;
+ mesBlock.find('.mes_img_container').removeClass('img_extra');
+ mesBlock.find('.mes_img').attr('src', '');
+ } else {
+ appendMediaToMessage(message, mesBlock);
+ }
+
await saveChatConditional();
}
diff --git a/public/scripts/popup.js b/public/scripts/popup.js
index 3cc911cd5..b6dd110f6 100644
--- a/public/scripts/popup.js
+++ b/public/scripts/popup.js
@@ -24,6 +24,15 @@ export const POPUP_RESULT = {
AFFIRMATIVE: 1,
NEGATIVE: 0,
CANCELLED: null,
+ CUSTOM1: 1001,
+ CUSTOM2: 1002,
+ CUSTOM3: 1003,
+ CUSTOM4: 1004,
+ CUSTOM5: 1005,
+ CUSTOM6: 1006,
+ CUSTOM7: 1007,
+ CUSTOM8: 1008,
+ CUSTOM9: 1009,
};
/**