Skip to content

Improve handling of narrows (views) with no messages #1506

Open
@neiljp

Description

@neiljp

Bug description

When selecting a new narrow (view) to show, via a hotkey, a button in either side panel, or using the message search (via /), the message focus changes to a message in the resulting view.

When the message list for that narrow/view is empty, ie. no messages are found, there is no visible message to gain focus, and the UI behaves strangely.

This can occur for many narrows/views, including:

This results in

It is possible to navigate out of this state by moving sideways and down (#580), or using one of the 'global' hotkeys such as w or q, P/#/f (though not a). However, these are workarounds.

This has been discussed variously in #zulip-terminal, and in at least the above linked issues, as well as early work on it in #278.

What did you expect to happen?

Certainly:

  • Empty the current message recipients content, or hide that section entirely (as per another issue)
  • Ensure the narrow title is properly updated (eg. starred, etc.)

In addition:

  1. Unlike the web app, we expect the focus to move somewhere after a new narrow is requested, so a placeholder in the message list may be the easiest short-term solution to use.

This was worked on historically in #278 as a fix for #259, where a 'fake message' was used as a placeholder. However, as demonstrated by the more complex logic we now support for searching/filtering the side panels, it should be reasonable to support a custom element for 'no results found' to be shown instead.

Even so, that solution would need to support various cases where messages 'arrive' in that empty narrow, and the placeholder is replaced by them.

  1. Alternatively, focus could be retained in the previous location, if the resulting narrow is found to be empty. This would be convenient for message searches, where an empty set of results might be reasonably expected by a user to leave the focus in the search box to adjust the search.

  2. Some combination of (1) and (2), since

  • a placeholder shows that the narrow is empty (no messages)
  • a placeholder can be focused, allowing easy movement horizontally across the app (left/right), such as from left panel to right panel.

Notes

  • I'm closing many of the linked issues, since they are essentially duplicates, ie. examples of the symptoms from the underlying problem.
  • This could unblock other features, such as Globally refocus after search #1049

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: UIGeneral user interface updatearea: event handlingHow events from the server are responded tobugSomething isn't workinghelp wantedThis issue should be clear enough to work onhigh priorityshould be done as soon as possible

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions