From f0d82de5d93d8c939676bb08e9d9c286fe0e8c32 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Fri, 7 Jul 2023 00:46:04 +0200 Subject: [PATCH] DEV: fix flakeyness with drawer specs (#22476) Chat drawer was using the `DiscourseURL` hook `afterRouteComplete`. This hook suffer from a very poor implementation which makes it very unreliable: ```javascript if (typeof opts.afterRouteComplete === "function") { schedule("afterRender", opts.afterRouteComplete); } ``` This commit attempts to return the promise from `handleURL` to directly use it and have a very reliable after transition hook. --- app/assets/javascripts/discourse/app/lib/url.js | 2 +- .../javascripts/discourse/components/chat-channel.js | 9 ++------- plugins/chat/spec/system/navigation_spec.rb | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/discourse/app/lib/url.js b/app/assets/javascripts/discourse/app/lib/url.js index 492d5027a26..7864a0d1fac 100644 --- a/app/assets/javascripts/discourse/app/lib/url.js +++ b/app/assets/javascripts/discourse/app/lib/url.js @@ -464,7 +464,7 @@ const DiscourseURL = EmberObject.extend({ transition._discourse_original_url = path; const promise = transition.promise || transition; - promise.then(() => this.jumpToElement(elementId)); + return promise.then(() => this.jumpToElement(elementId)); }, jumpToElement(elementId) { diff --git a/plugins/chat/assets/javascripts/discourse/components/chat-channel.js b/plugins/chat/assets/javascripts/discourse/components/chat-channel.js index 04c9f32de3c..e746dde30fc 100644 --- a/plugins/chat/assets/javascripts/discourse/components/chat-channel.js +++ b/plugins/chat/assets/javascripts/discourse/components/chat-channel.js @@ -825,13 +825,8 @@ export default class ChatLivePane extends Component { onCloseFullScreen() { this.chatStateManager.prefersDrawer(); - DiscourseURL.routeTo(this.chatStateManager.lastKnownAppURL, { - afterRouteComplete: () => { - this.appEvents.trigger( - "chat:open-url", - this.chatStateManager.lastKnownChatURL - ); - }, + DiscourseURL.routeTo(this.chatStateManager.lastKnownAppURL).then(() => { + DiscourseURL.routeTo(this.chatStateManager.lastKnownChatURL); }); } diff --git a/plugins/chat/spec/system/navigation_spec.rb b/plugins/chat/spec/system/navigation_spec.rb index d739c55bd49..4e318044c94 100644 --- a/plugins/chat/spec/system/navigation_spec.rb +++ b/plugins/chat/spec/system/navigation_spec.rb @@ -120,7 +120,7 @@ RSpec.describe "Navigation", type: :system do end context "when collapsing full page with previous state" do - xit "redirects to previous state" do + it "redirects to previous state" do visit("/t/-/#{topic.id}") chat_page.open_from_header chat_drawer_page.maximize