FIX: prevents back history loop (#22001)

The following case would create the perception of a broken back button on desktop:

- open discourse on home page
- click chat button in header
- hit back button
- observes that we are still on the channel didn't navigate to homepage as we would have expected

The back button is actually working but it's in a loop. We were doing a `transitionTo` after finding the ideal channel to show, so the browser history would look something like this:

- home
- chat index
- channel page

When hitting back, we would go to chat index which would run the same logic and transition us to channel page.

This change will use `replaceWith` to replace the chat index step by the channel step, this way our history will now look like this:

- home
- channel page

Hitting back will now correctly bring us to home.
This commit is contained in:
Joffrey JAFFEUX 2023-06-08 14:35:29 +02:00 committed by GitHub
parent 6513ca69da
commit 65d61b87c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -16,10 +16,10 @@ export default class ChatIndexRoute extends DiscourseRoute {
const id = this.chat.getIdealFirstChannelId();
if (id) {
return this.chatChannelsManager.find(id).then((c) => {
return this.router.transitionTo("chat.channel", ...c.routeModels);
return this.router.replaceWith("chat.channel", ...c.routeModels);
});
} else {
return this.router.transitionTo("chat.browse");
return this.router.replaceWith("chat.browse");
}
}