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, }; /**