Users

User List#

To retrive all registered users on MirrorFly SDK use below method. User list can also be retrived based on search key word, also this method supports pagination. This function will return the total number of pages.

warning

User presence and Profile instant update will not happen until a messege is sent to that particular user.

FlyCore.getUserList(PAGE_NUMBER, PER_PAGE_RESULT_SIZE, SEARCH_TERM, META_DATA_USER_LIST, (isSuccess, throwable, data) -> {
if (isSuccess) {
ArrayList<ProfileDetails> userList = (ArrayList<ProfileDetails>) data.get("data");
Integer totalPage = (Integer) data.get("total_page");
//User list fetched. Update the UI
} else {
//Get user list failed print throwable to find the details
}
});

Refer this doc to know more about Profile Details Class

ArgumentTypeDescription
PAGE_NUMBERintPage number of user list default value 1
PER_PAGE_RESULT_SIZEintNumber of users per page default value 50
SEARCH_TERMStringtext characters for which search has to happen default value empty
META_DATA_USER_LISTMetaDataUserListmodel class which filters the results by metadata default value is empty
CALLBACKFlyCallbackFlyCallback implemented as as lambda expression

Sync Contact#

warning

It will be only applicable for mobile number registration and contact book synchronization.

If mobile number is used as a primary id for communication in chat sdk then there has to be sync between user and server. The following code block initiate the contact sync and let the user communicate with their contacts who uses the client app too.

Note : In order to sync mobile contacts need to enable ChatManager.enableMobileNumberLogin

FlyCore.syncContacts(IS_FIRST_TIME);
ArgumentTypeDescription
IS_FIRST_TIMEbooleantrue for first time and false after when synchronising contacts

To observe contact sync events you can either implement or create a annonymous ProfileEventsListener interface and attach it to ChatEventsManager and detach the listener when no longer needed. To know more about other methods in ProfileEventsListener kindly visit Profile Events

@Override
public void onContactSyncComplete(boolean isSuccess) {
if (isSuccess) {
// Contact Sync Success Reload Contact list
}
}

To avoid unnecessay multiple contact sync calls observe the status of the contact sync beore calling syncContacts.

FlyCore.getContactSyncState().observe(getViewLifecycleOwner(), result -> {
if (result instanceof Result.Success) {}
else if (result instanceof Result.Error) {}
else if (result instanceof Result.InProgress) { }
});

The value of the contactSyncState can also be accessible by directly calling the get value method since it's a live data variable.

Result<Boolean> contactSyncStateResult = FlyCore.getContactSyncState().getValue();

Get Registered Users#

Note : The registered contacts who are in your contacts will retrieved after the contact sync, those people's only observe your profile,user presence updates.

Once we started communicating , we can get the list of contact with chat data with whom we communicated so far.

FlyCore.getRegisteredUsers(FETCH_FROM_SERVER,(isSuccess, throwable, data) -> {
if (isSuccess) {
ArrayList<ProfileDetails> registeredUsers = (ArrayList<ProfileDetails>) data.get("data");
//Registered users fetched. Update the UI
} else {
//Fetching registered users failed print throwable to find the exception details
}
});

Refer this doc to know more about ProfileDetails Class

ArgumentDescriptionData type
FETCH_FROM_SERVERProfileProfile object which the updated value
caution

FlyCallback which is used as a callback for most of the i/o operation is expressed as lambda expression for easy reading.

Revoke Contact Sync#

If mobile number is used as a primary id for communication in chat sdk and contact sync have been completed then the following code block will delete user contacts and revoke the contact sync.

FlyCore.revokeContactSync((isSuccess, throwable, data) -> {
if (isSuccess) {
// Revoke Contact Sync Success Reload Contact list
} else {
}
});
ArgumentTypeDescription
CALLBACKFlyCallbackFlyCallback implemented as lambda expression