RocketChat / Rocket.Chat.Android

Legacy mobile Rocket.Chat client in Kotlin for Android
https://rocket.chat
MIT License
870 stars 554 forks source link

[DISCUSSION][UX] Inbox search clarification #1686

Open bizzbyster opened 6 years ago

bizzbyster commented 6 years ago

Description of issue

There are multiple related UX problems associated with the search feature which is initiated by clicking the magnifying class icon in the current Android client "inbox" shown here:

drawing

The first issue is that when the icon is clicked we see the same list of active chats along with a preview of the most recent message in those chats, which suggests that the search will match the typed string against the messages themselves:

drawing

when in fact it only searches for users/groups to chat with. The preview of the messages is misleading.

A different but related issue is that one would expect an inbox search to search the contents of the inbox -- after all the magnifying glass is pinned to the inbox itself -- so I would expect the search to match against strings found in my inbox, meaning messages in DMs and the names of users/groups/channels that I am chatting with. I would not expect the inbox search to search across ALL users/groups/channels on the server, including those that I do not have an open chat with.

Solution

These two issues have confused many of our users and we think the UX would be more intuitive if inbox search button led to a search of the inbox content. This is pretty standard functionality but for an example look at how WhatsApp inbox search (which uses the same magnifying class icon) works. As one would expect, it searches across users and groups and messages within the inbox and not beyond that.

Associated change needed

If this issue is fixed as per the above, we would then eliminate the only way that new chats/groups are created using the current Android client. In my opinion, this should be resolved via a FAB button, which was implemented but then rejected here: https://github.com/RocketChat/Rocket.Chat.Android/pull/891. Note that the React Native RC client uses a FAB button as does Hip Chat, FB messenger, WhatsApp, and many more. In fact, if you look up the documentation of the FAB button, the example given for when to use a FAB is in fact exactly this use case -- to create new chat's in a chat app inbox. See https://material.io/design/components/buttons-floating-action-button.html and this image:

drawing
rafaelks commented 6 years ago

@bizzbyster Thanks for pointing that to us, makes a lot of sense to me. 👍

Searching messages is not as easy as it sounds for us, because we don't have all the content on the phone and we don't have a "global search" yet.

What do you think about changing the layout of the cells to only show the name of the chat when search is activated? This may not be the perfect solution, but should work in the UX perspective and resolves the problem very easily for now.

Related to the "+" button: agreed, if we change the behaviour a little bit on what happens once you tap it. I think the ideal case would be: when I press the + I would be able to start a DM (with existing or not user) and create a new group/channel if that's what I want. What do yo think?

Again, thanks for the feedback! 💯

bizzbyster commented 6 years ago

@rafaelks Thanks for commenting on this. I'd like to think on it a bit more but my first reaction is this:

If we add the "+" FAB, do we still need the search magnifying glass? Why not just at that back once we have the ability to do the "global search" (what I call inbox search) properly?

Incidentally, we may be able to help with this search feature if you point me to where it is being discussed and/or designed.

bizzbyster commented 6 years ago

@rafaelks No doubt this additional piece belongs in a new issue but the new chat/group that results from clicking the "+" FAB button, can also include an option to "invite" users that are not already on the server. This could integrate this work https://github.com/WideChat/Rocket.Chat.Android/commit/cb786166fc6ad45199bcbc0cf25fdc65c7cebce9 which is documented here https://forums.rocket.chat/t/invite-new-users-feature/668. So by clicking the '+' you 1) start a new chat with a user already on the server or join an existing public group, 2) start a new private group or public channel, or 3) invite new users to the server. Thoughts?

bizzbyster commented 6 years ago

On further thought and discussion @rafaelks I agree with what you propose:

  1. changing the layout of the cells to only show the name of the chat when search is activated
  2. when I press the + I would be able to start a DM (with existing or not user) and create a new group/channel if that's what I want -- where the "+" is a floating action button.

Next time I'll think a bit before responding. :)

rafaelks commented 6 years ago

Adding @thiagosanchz and @filipedelimabrito to the discussion here.

bizzbyster commented 6 years ago

Also, when I press the + FAB and go to a new chat dialog which allows me to search for existing users on the server it would be great if we could also give the option to invite users via the share intent. The work for this can be pulled from here https://github.com/WideChat/Rocket.Chat.Android/pull/91 (with feature discussion here https://forums.rocket.chat/t/invite-new-users-feature/668) with the difference being that the button to trigger it would be on this create a new DM/group/channel dialog. This would really distinguish the inbox search and the + / FAB / new chat actions while maintaining the way that they overlap in that they can both find users/groups to chat with.