diff --git a/app/assets/javascripts/discourse/app/components/sidebar/switch-panel-buttons.hbs b/app/assets/javascripts/discourse/app/components/sidebar/switch-panel-buttons.hbs index aee2505a104..e558957c56c 100644 --- a/app/assets/javascripts/discourse/app/components/sidebar/switch-panel-buttons.hbs +++ b/app/assets/javascripts/discourse/app/components/sidebar/switch-panel-buttons.hbs @@ -1,8 +1,9 @@ {{#each @buttons as |button|}} {{/each}} \ No newline at end of file diff --git a/app/assets/javascripts/discourse/app/components/sidebar/switch-panel-buttons.js b/app/assets/javascripts/discourse/app/components/sidebar/switch-panel-buttons.js index 05f9c679789..b6ed9bae1ae 100644 --- a/app/assets/javascripts/discourse/app/components/sidebar/switch-panel-buttons.js +++ b/app/assets/javascripts/discourse/app/components/sidebar/switch-panel-buttons.js @@ -1,20 +1,23 @@ import Component from "@glimmer/component"; import { inject as service } from "@ember/service"; import { action } from "@ember/object"; +import { tracked } from "@glimmer/tracking"; export default class SwitchPanelButtons extends Component { @service router; @service sidebarState; + @tracked isSwitching = false; @action - switchPanel(currentPanel, panel) { + switchPanel(panel) { + this.isSwitching = true; this.sidebarState.currentPanel.lastKnownURL = this.router.currentURL; - this.sidebarState.setPanel(panel.key); + const url = panel.lastKnownURL || panel.switchButtonDefaultUrl; - if (url === "/") { - this.router.transitionTo("discovery.latest"); - } else { - this.router.transitionTo(url); - } + const destination = url === "/" ? "/latest" : url; + this.router.transitionTo(destination).finally(() => { + this.isSwitching = false; + this.sidebarState.setPanel(panel.key); + }); } }