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
With actions expanded
Detailed specs:
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):
Really hot! :fire:
Other examples of these account cards are Diaspora, Facebook and Twitter:
@leonklingele
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.
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):
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..
@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.
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.
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.
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.
Iirc with 9.0 contacts are stored by the dav
app (always enabled) with Contacts
just providing the web interface
That is correct. Tables for Calendars and Contacts are created in the DB ... Even if the frontends are not installed :wink:
However: I dont think it makes much sense to show this widget, if the app is diabled :stuck_out_tongue_winking_eye:
In any case we're going a bit deep overboard with this discussion and too much into wall of texts it seems. ;) We have enough to build a great first iteration, so letās focus on getting that done. :)
Iirc with 9.0 contacts are stored by the dav app (always enabled) with Contacts just providing the web interface
Indeed, but that DB needs to be populated one way or another. I guess that if it's empty, you could show a message, inviting the user to install the Contacts app to be able to quickly share a document from the top bar, but I'm wondering if share should even be there. Wouldn't you start by selecting the document and then share it instead of selecting a contact first from the top bar? (It's not the same as sending a document from a chat)
Also, the specs as described in the OP have another dependency. You need a chat app installed for some of the features to work (show last message, opening a chat window). I'm guessing a lot of the described actions require if-else blocks, but it's not clearly stated and is it the best solution or should a plugin system be put in place, so that apps can add their own actions?
Never mind, this is purely a specs discussion, not an implementation one.
I have 2 comments then:
The most used action with this contact (call, share, mail) is directly shown
I'm not sure this will work. In my experience, automation almost always gets in the way. Sure the action I want will always be in the 3 dots, but then why have 2 icons?
Secondly, you have to be careful with the sub-menus and modal cards on mobile, it can quickly become a pain to use when content auto-scrolls or you have to zoom, etc.
Maybe we could get some screenshots on how it would look on an "typical" HD mobile screen?
You need a chat app installed for some of the features to work
Contacts is currently slated to be an installed-by-default, core app, right? Is this the case with the chat app also? (Will the default chat app be Spreed?)
Contacts is currently slated to be an installed-by-default, core app, right? Is this the case with the chat app also? (Will the default chat app be Spreed?)
Uhm... No. I think you need to enable them. Also with Nextcloud 10 :confused:
Maybe we should move the discussion to our forum, to keep this Issue as clean as possible.
So, I have been thinking about this for the last couples of days and here are some thoughts:
@LEDfan @sualko you should get involved in the planning discussion on integration of the video chat and text chat! :) At https://github.com/nextcloud/spreed/issues/35
Something for 12
WOW! I can't wait for this to be available! This feature is exactly what I'm looking for! š
- 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.
Alternatively, we could expand the contact in the list and show that information underneath. Then we don't have a popover menu inside a popover menu. Nested popover menus look strange IMO.
@ChristophWurst Iād say when Ā»DetailsĀ« is clicked, the menu popover is replaced by the details popover. Itās pretty similar to what you describe, except that it doesnāt break the flow or layout of the listing. :)
I'd highly appreciate input/feedback on the API design https://github.com/nextcloud/server/issues/3316 š
@jancborchardt stupid question, but what should the 'share' action do? I can imagine the intention of 'call' and 'mail', but 'share' confuses me š
It's likely that contacts have multiple mail addresses, how should we handle that case - interface-wise?
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.
Summoning @skjnldsv @Henni @irgendwie for this one. Do you guys know if the contacts app currently supports such URLs? If so, which format should be used? Thanks :)
Summoning @skjnldsv @Henni @irgendwie for this one. Do you guys know if the contacts app currently supports such URLs? If so, which format should be used? Thanks :)
I think this was done with https://github.com/owncloud/contacts/pull/323, and the format is something like https://localhost/index.php/apps/contacts/#/all/2cbf6908-4a5b-403f-8e68-77165679b3bb š
@ChristophWurst
It's wih the default group: All%20contacts
:)
https://localhost/index.php/apps/contacts#/All%20contacts?uid=2587a92d-f70e-4d75-a5ad-938b699669c8
It's wih the default group: All%20contacts :)
https://localhost/index.php/apps/contacts#/All%20contacts?uid=2587a92d-f70e-4d75-a5ad-938b699669c8
Yeah I figured that too, but apparently it's localized, so I wasn't sure if this works for all users.
I can add a redirect to a single uid easily if that's what we need :)
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.
@ChristophWurst Share should open a filepicker - what do youtl think? :)
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 :-)
Ok so first let's talk about if it makes sense. My idea would be:
How would you expect the flow @karlitschek @ChristophWurst?
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 ;-)
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?
@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. :)
Implemented with #3233
Hi, is it any option to limit the list of users in the dropdown to group(s) a user belongs to, or circle?
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.
Most helpful comment
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?