Skip to content

Design spec: Contacts menu #207

Description

@jancborchardt

Reasoning: We want to integrate contacts more nicely into Nextcloud and allow people to quickly communicate with their friends. This includes text chat, voice/video call, email, sharing and other means.

For this we decided to go for an icon in the top bar between search and the user menu which is always there. Tapping on it will expand the Contacts dropdown. We went with this over a permanent sidebar because it’s less distracting/intrusive and works nicely regardless of active app or form factor. (In Files for example there would otherwise be two sidebars on the right.)

cc @nextcloud/designers @LEDfan @sualko @Henni @karlitschek @schiessle

Normal state
contacts dropdown

With actions expanded
contacts dropdown actions

Detailed specs:

  • The contacts are sorted by last interaction. It’s easiest and most obvious for the first iteration. (Instead of also factoring in frequency etc)
  • On opening the dropdown, the search field will automatically be focused so people can directly type to filter.
  • Below the name the last chat message is shown.
  • Tapping on the area of picture, name, message etc opens a chat window (a panel down below like in the chat app).
  • The most used action with this contact (call, share, mail) is directly shown. Next to it there’s a 3-dot menu with the other actions, just like in Files.
  • In there is an entry »Details« to show the other contact details. This could be done by a modal/card with information from the Contacts app to not break the flow. But as a first iteration, a direct link (in a new tab) to the contact entry in the Contacts app is fine. This card should be a global thing we can show everywhere where there’s a user name + picture.
  • Scrolling will load new contacts via lazy loading. At some point (after say 25 people) there’s a link »Show all contacts …« which will lead to the Contacts app.

Activity

  1. added this to the milestone on Jun 23, 2016
  2. MorrisJobke commented on Jun 23, 2016

    @MorrisJobke
    Member

    This card should be a global thing we can show everywhere where there’s a user name + picture.

    Check out how discourse does it (by clicking on the avatar):

    bildschirmfoto 2016-06-23 um 14 43 21

  3. enoch85 commented on Jun 23, 2016

    @enoch85
    Member

    Really hot! 🔥

  4. jancborchardt commented on Jun 23, 2016

    @jancborchardt
    MemberAuthor

    Other examples of these account cards are Diaspora, Facebook and Twitter:
    diaspora card
    twitter card

  5. karlitschek commented on Jun 24, 2016

    @karlitschek
    Member
  6. oparoz commented on Jun 27, 2016

    @oparoz
    Member

    Since having the Contacts app is a requirement for this feature, shouldn't this issue be created there? Surely people who don't have the app installed won't see the new icon.

  7. Bugsbane commented on Jun 28, 2016

    @Bugsbane
    Member

    Overall, I like it. I like the contacts dropdown concept (much less obtrusive than a full sidebar) and the idea of using it to introduce people to ways they can communicate / share with those users.

    It seems to me that there is already a lot of pre-established convention for clicking on an avatar icon bringing up info on the contact, rather than opening chat (which may not be installed anyway, unless this is going into Nextcloud core).

    Currently just about every social network, forum and major mobile operating system I can think of brings up the contacts details when you click on a contacts avatar (as opposed to say the last message under their name etc).

    Relegating this function to having to click on a three dot menu next to their name, and then on a second "Details" icon seems unnecessarily complex. What about, if clicking:
    The avatar / username - brings up the contact details
    The last chat message - brings up chat (possibly display a generic message instead of their last message if they haven't been chatted to before).

    I'd also suggest that users be able to star contacts and then have those display first, with unstarred, but recently interacted contacts just after, much like how the Android phone app displays contacts.

    Also, As long as we're making this dropdown a discovery point for real time chat / video calling, it could be useful to display when users are online and available, possibly with the common small green circle often seen in the bottom corner of many apps to denote being online, and maybe listing those online users preferentially, as in this mockup (click the image - it's tricky to make out with the screenshot shrunk small):
    contacts-im

  8. sualko commented on Jun 28, 2016

    @sualko
    Member

    I like the idea and design 👍 . For our chat it would be helpful, if there is a good api which enables us to inject buttons like chat, call, video etc..

  9. jancborchardt commented on Jul 1, 2016

    @jancborchardt
    MemberAuthor

    @Bugsbane good suggestions! Especially the online indicator makes sense, if that’s possible. The starring should be integrated of course.

    About the clicking-avatar-to-chat: In Nextcloud, communication takes priority over a personal profile at this point. We don’t even have the possibility to view other people’s profiles currently, so there’s nothing to show. ;) For now, opening a chat makes way more sense to directly communicate and collaborate.

  10. Bugsbane commented on Jul 1, 2016

    @Bugsbane
    Member

    We don’t even have the possibility to view other people’s profiles currently, so there’s nothing to show.

    I was assuming that we were using contacts from the contacts app, and so clicking the avatar would show details from the contact in the contacts app. It seems though, that you're thinking that the contacts from this menu are actually other users on the Nextcloud server (and possibly from trusted federated servers?).

    Thinking about this, it seems that this actually touches on a much larger interaction issue - namely how contacts in the contacts app (used by the contacts and mail apps) relate to other Nextcloud users (which is presumably what the chat app and Spreed.me app uses). Right now, we seem to have two completely distinct lists of people that the user is exposed to - Nextcloud users and the people in the contacts app.

    For example, does it make sense for someone the user knows to have two different contacts, one the user created a contact for in contacts and sent an email to in the mail app, and another for chatting with because they're on the same server in the same group... when both of these contacts are known to Nextcloud (by cross referencing Conacts with the user list) to be the exact same email address or federated cloud ID? If we choose to "smart link" Nextcloud users with contacts in the contacts app, then maybe the contacts app should already be showing people that they would be able to chat with / contact that they haven't added contact for already, but then you get into those contacts either not being synced with Caldav, or people potentially getting contacts they didn't personally create popping up on their phones etc...

    I'm not sure what the overall best answer is, but it does seem to me, that users expect to think in terms of a single list of contacts that they know, to varying degrees, and not to have to understand the technical differences between a contact via being in a shared group of a specific Nextcloud server, vs a contact added by sending an email in the mail app.

  11. crossix commented on Jul 6, 2016

    @crossix

    I agree with @Bugsbane It would be nice if there were a way to "link" or "smart link" a contact from the contacts list to one that exists in the Nextcloud users area say via the email fields. It's never really made sense to me as to why these two are separate areas with no link in between. I've often wondered if there was a way to expand upon the users area instead of just being able to add / remove users, change passwords, etc; to also include contact info for that user. Yes this could be possible with LDAP, but what if you aren't using LDAP integration?

    You wouldn't always have to link contacts (you could still create contacts separately), but if the user existed in the users area give to option to do so.

  12. 28 remaining items

  13. skjnldsv commented on Feb 14, 2017

    @skjnldsv
    Member

    I can add a redirect to a single uid easily if that's what we need :)

  14. ChristophWurst commented on Feb 14, 2017

    @ChristophWurst
    Member

    Yup, that would be great 🚀

    We can either handle this in the contacts app client-code or have a dedicated route where we redirect the request to the according address book.

  15. jancborchardt commented on Feb 14, 2017

    @jancborchardt
    MemberAuthor

    @ChristophWurst Share should open a filepicker - what do youtl think? :)

  16. ChristophWurst commented on Feb 15, 2017

    @ChristophWurst
    Member

    Really? I did not expect that. So what would happen after I presumably select a random file with the file picker? Are you planning to duplicate the file sharing workflow?

    In order to implement this, I need more details. Please describe what and how all the actions should work. Ideally, some mockups would be really helpful here :-)

  17. jancborchardt commented on Feb 15, 2017

    @jancborchardt
    MemberAuthor

    Ok so first let's talk about if it makes sense. My idea would be:

    1. You click share on a friend
    2. Filepicker opens (problem is, how do you share stuff like contacts or calendars?)
    3. Choosing a file could simply directly share it, with the default permissions. No opening of sharing sidebar etx.

    How would you expect the flow @karlitschek @ChristophWurst?

  18. karlitschek commented on Feb 15, 2017

    @karlitschek
    Member

    Well. Tricky. Sharing files, calendars, contacts are in deed difficult. Maybe this was a bad idea from me in the first place. ;-) Maybe this menu should do stuff like, send mail, start chat, call, show contact details, ... But probably not sharing. At least I'm also unsure how the flow here should work ;-)

  19. skjnldsv commented on Feb 15, 2017

    @skjnldsv
    Member

    I say, let's focus on simple actions like chat, call, show contact... And we'll see after the implementation if this is difficult enough and/or worth the work?

  20. jancborchardt commented on Mar 27, 2017

    @jancborchardt
    MemberAuthor

    @georgehrke will work on making it happen for everywhere an avatar+username is shown. On click, it will simply show the dropdown menu with the actions. :)

  21. MorrisJobke commented on Apr 26, 2017

    @MorrisJobke
    Member

    Implemented with #3233

  22. alexeyvolkoff commented on May 23, 2017

    @alexeyvolkoff

    Hi, is it any option to limit the list of users in the dropdown to group(s) a user belongs to, or circle?

  23. beerlao commented on May 24, 2017

    @beerlao

    Wouldn't it make sense to at least give an option to hide local users in contacts menu or limit them to the same group? Then only contacts from contacts app or the same group would be shown. Otherwise users will be able to see contact details and contact images of other users on the same NC12 instance.

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

Metadata

Metadata

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions