FIX: correctly closes panel when exiting chat (#23201)

We don't use activate/deactivate as it would cause: close/open in short succession when going from threads to thread for example.
This commit is contained in:
Joffrey JAFFEUX 2023-08-23 13:05:15 +02:00 committed by GitHub
parent 5842e0f50d
commit a008f61f8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 2 deletions

View File

@ -30,7 +30,8 @@ export default class ChatChannelThread extends DiscourseRoute {
if (
transition.targetName === "chat.channel.index" ||
transition.targetName === "chat.channel.near-message" ||
transition.targetName === "chat.index"
transition.targetName === "chat.index" ||
!transition.targetName.startsWith("chat")
) {
this.chatStateManager.closeSidePanel();
}

View File

@ -21,7 +21,12 @@ export default class ChatChannelThreads extends DiscourseRoute {
@action
willTransition(transition) {
if (transition.targetName === "chat.channel.index") {
if (
transition.targetName === "chat.channel.index" ||
transition.targetName === "chat.channel.near-message" ||
transition.targetName === "chat.index" ||
!transition.targetName.startsWith("chat")
) {
this.chatStateManager.closeSidePanel();
}
}

View File

@ -352,5 +352,29 @@ RSpec.describe "Navigation", type: :system do
expect(sidebar_component).to have_no_section_link(category_channel.name, active: true)
end
end
context "when exiting a thread for homepage" do
fab!(:thread) { Fabricate(:chat_thread, channel: category_channel) }
before do
current_user.user_option.update(
chat_separate_sidebar_mode: UserOption.chat_separate_sidebar_modes[:always],
)
chat_page.prefers_full_page
category_channel.update!(threading_enabled: true)
thread.add(current_user)
end
it "correctly closes the panel" do
chat_page.visit_thread(thread)
expect(side_panel_page).to have_open_thread(thread)
find("#site-logo").click
sidebar_component.switch_to_chat
expect(page).to have_no_css(".chat-side-panel")
end
end
end
end

View File

@ -30,6 +30,10 @@ module PageObjects
has_css?(".sidebar-sections [data-section-name='#{name.parameterize}']")
end
def switch_to_chat
find(".sidebar__panel-switch-button[data-key='chat']").click
end
def has_no_section?(name)
has_no_css?(".sidebar-sections [data-section-name='#{name.parameterize}']")
end