FIX: new message brings a direct message channel to the top (#19332)

Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
This commit is contained in:
Joffrey JAFFEUX 2022-12-05 22:49:42 +01:00 committed by GitHub
parent 1d42cc94a2
commit cc769ac916
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 59 additions and 3 deletions

View File

@ -750,9 +750,13 @@ export default class Chat extends Service {
this.userChatChannelTrackingStateChanged();
channel.set("last_message_sent_at", new Date());
(this.directMessageChannels || [])
.findBy("id", parseInt(channel.id, 10))
?.reSortDirectMessageChannels?.();
const directMessageChannel = (this.directMessageChannels || []).findBy(
"id",
parseInt(channel.id, 10)
);
if (directMessageChannel) {
this.reSortDirectMessageChannels();
}
},
channel.message_bus_last_ids.new_messages
);

View File

@ -0,0 +1,52 @@
# frozen_string_literal: true
RSpec.describe "Receiving message", type: :system, js: true do
fab!(:current_user) { Fabricate(:admin) }
fab!(:user_2) { Fabricate(:user) }
fab!(:user_3) { Fabricate(:user) }
fab!(:direct_message_channel_1) do
Fabricate(:direct_message_channel, users: [current_user, user_2])
end
fab!(:direct_message_channel_2) do
Fabricate(:direct_message_channel, users: [current_user, user_2, user_3])
end
let(:chat_page) { PageObjects::Pages::Chat.new }
before do
chat_system_bootstrap(current_user, [direct_message_channel_1, direct_message_channel_2])
sign_in(current_user)
end
context "when core sidebar is enabled" do
before do
SiteSetting.enable_sidebar = true
SiteSetting.enable_experimental_sidebar_hamburger = true
end
context "when receiving a direct message" do
it "reorders the direct messages sidebar section links ordering by last message received" do
visit("/")
expect(
page.find(
"#sidebar-section-content-chat-dms .sidebar-section-link-wrapper:nth-child(2) .sidebar-row",
),
).to have_content(direct_message_channel_2.name)
creator =
Chat::ChatMessageCreator.create(
chat_channel: direct_message_channel_2,
user: user_2,
content: "this is good",
)
expect(
page.find(
"#sidebar-section-content-chat-dms .sidebar-section-link-wrapper:nth-child(1) .sidebar-row",
),
).to have_content(direct_message_channel_2.name)
end
end
end
end