mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-22 22:36:11 +08:00
When the chat drawer is closed and reopened on a starred channel, the back button took the user to the default channels list instead of the starred-channels list they had originally come from. Root cause: `chatHistory.visit(route)` always appended to history. When the drawer reopens to `lastKnownChatURL` (the channel itself), the same route is appended a second time, shifting `previousRoute` off the original `chat.starred-channels` entry. The back-button fallback in `drawer-routes/channel.gjs` then routed to `chat.channels`. Fix: dedupe consecutive identical route visits in `chatHistory.visit` by comparing name and params (via `deepEqual`). Reopening to the same URL no longer clobbers the user's real navigation context. Adds a unit test for the dedup behavior, a system spec covering the close/reopen scenario, and a view-agnostic `open_channel_row` helper on the drawer page object (the existing `open_channel` is scoped to the channels-list view only and doesn't work from the starred view). https://meta.discourse.org/t/403431 |
||
|---|---|---|
| .. | ||
| browse_spec.rb | ||
| direct_messages_spec.rb | ||
| index_spec.rb | ||
| starred_channels_spec.rb | ||
| threads_spec.rb | ||