diff --git a/plugins/chat/assets/javascripts/discourse/components/chat-message-collapser.hbs b/plugins/chat/assets/javascripts/discourse/components/chat-message-collapser.hbs index 206f343fc42..588df4baca7 100644 --- a/plugins/chat/assets/javascripts/discourse/components/chat-message-collapser.hbs +++ b/plugins/chat/assets/javascripts/discourse/components/chat-message-collapser.hbs @@ -2,30 +2,18 @@ {{#if this.hasUploads}} {{html-safe @cooked}} - - {{#unless collapsed}} -
- {{#each @uploads as |upload|}} - - {{/each}} -
- {{/unless}} + +
+ {{#each @uploads as |upload|}} + + {{/each}} +
{{else}} {{#each this.cookedBodies as |cooked|}} {{#if cooked.needsCollapser}} - - {{#unless collapsed}} - {{cooked.body}} - {{/unless}} + + {{cooked.body}} {{else}} {{cooked.body}} diff --git a/plugins/chat/spec/system/channel_message_upload_spec.rb b/plugins/chat/spec/system/channel_message_upload_spec.rb new file mode 100644 index 00000000000..4cc981b9c63 --- /dev/null +++ b/plugins/chat/spec/system/channel_message_upload_spec.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +RSpec.describe "Channel message selection", type: :system, js: true do + fab!(:current_user) { Fabricate(:user) } + fab!(:channel_1) { Fabricate(:chat_channel) } + fab!(:message_1) { Fabricate(:chat_message, chat_channel: channel_1) } + + let(:chat) { PageObjects::Pages::Chat.new } + let(:channel) { PageObjects::Pages::ChatChannel.new } + let(:image) do + Fabricate( + :upload, + original_filename: "test_image.jpg", + width: 400, + height: 300, + extension: "jpg", + ) + end + + before do + chat_system_bootstrap + channel_1.add(current_user) + sign_in(current_user) + message_1.attach_uploads([image]) + end + + it "can collapse/expand an image and still have lightbox working" do + chat.visit_channel(channel_1) + + find(".chat-message-collapser-button").click + expect(page).to have_css(".chat-message-collapser-body.hidden", visible: :false) + find(".chat-message-collapser-button").click + expect(page).to have_no_css(".chat-message-collapser-body.hidden") + find(".chat-img-upload").click + + # visible false is because the upload doesn’t exist but it's enough to know lightbox is working + expect(page).to have_css(".mfp-image-holder img[src*='#{image.url}']", visible: false) + end +end