Contacts Sync Feature

For mobile Rocket.chat clients, the ability to know which of my contacts are already using Rocket.chat improves the first use experience and increases the usage and adoption of Rocket.chat. This is a standard feature in consumer-oriented chat apps like Whatsapp, Telegram, Snapchat, etc.:

In this issue, I already propose the use of the Floating Action Button to initiate new chats and @rafael.kellermann seems to agree with that approach. The FAB button appears as follows:

When the user initiates a new chat this way (as opposed to via the inbox search) the user should be able to search both the database of users with accounts on the Rocket.chat server by username but also the database of users in his or her local Contacts database. There should be an indication (“Hey There! I’m using Rocket.chat.”) when one of those Contacts has an account on the Rocket.chat server, which is determined by matching email address or by matching phone number. A further enhancement of this feature is if users could be notified when their Contacts have recently created Rocket.chat server accounts so that, for instance, if I have invited someone I know when they have created an account and are ready to be chatted with.

Lastly, it would be ideal also if Contacts that are not using Rocket.chat can be invited via a single click. For this I will create a different topic since the functionality is somewhat independent of Contacts sync.

How will this feature be implemented? I have some high level notions but would like to hear what the community thinks – no doubt you all have better approaches.

I think this would work well provided that servers offered some kind of federation ala email so someone on one server can communicate with a person on another, but this also adds overhead to what is likely a company’s corporate chat server, so it requires careful consideration and implementation.

Was this feature ever implemented to invite contacts to the app, or to the group (if already on the app) based on the contacts on the user’s device?