Search in sources :

Example 6 with User

use of org.matrix.androidsdk.rest.model.User in project matrix-android-sdk by matrix-org.

the class RoomsRestClient method inviteUserToRoom.

/**
 * Invite a user to a room.
 *
 * @param roomId   the room id
 * @param userId   the user id
 * @param callback the async callback
 */
public void inviteUserToRoom(final String roomId, final String userId, final ApiCallback<Void> callback) {
    final String description = "inviteToRoom : roomId " + roomId + " userId " + userId;
    User user = new User();
    user.user_id = userId;
    try {
        mApi.invite(roomId, user, new RestAdapterCallback<Void>(description, mUnsentEventsManager, callback, new RestAdapterCallback.RequestRetryCallBack() {

            @Override
            public void onRetry() {
                inviteUserToRoom(roomId, userId, callback);
            }
        }));
    } catch (Throwable t) {
        callback.onUnexpectedError(new Exception(t));
    }
}
Also used : BannedUser(org.matrix.androidsdk.rest.model.BannedUser) User(org.matrix.androidsdk.rest.model.User)

Example 7 with User

use of org.matrix.androidsdk.rest.model.User in project matrix-android-sdk by matrix-org.

the class MXMemoryStore method setAvatarURL.

@Override
public boolean setAvatarURL(String avatarURL, long ts) {
    boolean isUpdated = false;
    synchronized (LOG_TAG) {
        if (null != mMetadata) {
            Log.d(LOG_TAG, "## setAvatarURL() : from " + mMetadata.mUserAvatarUrl + " to " + avatarURL + " ts " + ts);
        }
        isUpdated = (null != mMetadata) && !TextUtils.equals(mMetadata.mUserAvatarUrl, avatarURL) && (mUserAvatarUrlTs < ts) && (ts != 0) && (ts <= System.currentTimeMillis());
        if (isUpdated) {
            mMetadata.mUserAvatarUrl = avatarURL;
            mUserAvatarUrlTs = ts;
            // update the cached oneself User
            User myUser = getUser(mMetadata.mUserId);
            if (null != myUser) {
                myUser.setAvatarUrl(avatarURL);
            }
            Log.d(LOG_TAG, "## setAvatarURL() : updated");
            commit();
        }
    }
    return isUpdated;
}
Also used : User(org.matrix.androidsdk.rest.model.User)

Example 8 with User

use of org.matrix.androidsdk.rest.model.User in project matrix-android-sdk by matrix-org.

the class MXDataHandler method handlePresenceEvent.

// ================================================================================
// Sync V2
// ================================================================================
/**
 * Handle a presence event.
 *
 * @param presenceEvent teh presence event.
 */
private void handlePresenceEvent(Event presenceEvent) {
    // Presence event
    if (Event.EVENT_TYPE_PRESENCE.equals(presenceEvent.getType())) {
        User userPresence = JsonUtils.toUser(presenceEvent.getContent());
        // use the sender by default
        if (!TextUtils.isEmpty(presenceEvent.getSender())) {
            userPresence.user_id = presenceEvent.getSender();
        }
        User user = mStore.getUser(userPresence.user_id);
        if (user == null) {
            user = userPresence;
            user.setDataHandler(this);
        } else {
            user.currently_active = userPresence.currently_active;
            user.presence = userPresence.presence;
            user.lastActiveAgo = userPresence.lastActiveAgo;
        }
        user.setLatestPresenceTs(System.currentTimeMillis());
        // check if the current user has been updated
        if (mCredentials.userId.equals(user.user_id)) {
            // always use the up-to-date information
            getMyUser().displayname = user.displayname;
            getMyUser().avatar_url = user.getAvatarUrl();
            mStore.setAvatarURL(user.getAvatarUrl(), presenceEvent.getOriginServerTs());
            mStore.setDisplayName(user.displayname, presenceEvent.getOriginServerTs());
        }
        mStore.storeUser(user);
        this.onPresenceUpdate(presenceEvent, user);
    }
}
Also used : MyUser(org.matrix.androidsdk.data.MyUser) User(org.matrix.androidsdk.rest.model.User)

Example 9 with User

use of org.matrix.androidsdk.rest.model.User in project matrix-android-sdk by matrix-org.

the class MXMemoryStore method updateUserWithRoomMemberEvent.

/**
 * Update the user information from a room member.
 *
 * @param roomMember the room member.
 */
@Override
public void updateUserWithRoomMemberEvent(RoomMember roomMember) {
    try {
        if (null != roomMember) {
            User user = getUser(roomMember.getUserId());
            // if the user does not exist, create it
            if (null == user) {
                user = new User();
                user.user_id = roomMember.getUserId();
                user.setRetrievedFromRoomMember();
                storeUser(user);
            }
            // the leave and ban events have no displayname and no avatar url.
            if (TextUtils.equals(roomMember.membership, RoomMember.MEMBERSHIP_JOIN)) {
                boolean hasUpdates = !TextUtils.equals(user.displayname, roomMember.displayname) || !TextUtils.equals(user.getAvatarUrl(), roomMember.getAvatarUrl());
                if (hasUpdates) {
                    // but if the presence is set to 0, it means that the user information is not initialized
                    if (user.getLatestPresenceTs() < roomMember.getOriginServerTs()) {
                        // if the user joined the room, it implies that he used the application
                        user.displayname = roomMember.displayname;
                        user.setAvatarUrl(roomMember.getAvatarUrl());
                        user.setLatestPresenceTs(roomMember.getOriginServerTs());
                        user.setRetrievedFromRoomMember();
                    }
                }
            }
        }
    } catch (OutOfMemoryError oom) {
        dispatchOOM(oom);
        Log.e(LOG_TAG, "## updateUserWithRoomMemberEvent() failed " + oom.getMessage());
    } catch (Exception e) {
        Log.e(LOG_TAG, "## updateUserWithRoomMemberEvent() failed " + e.getMessage());
    }
}
Also used : User(org.matrix.androidsdk.rest.model.User)

Example 10 with User

use of org.matrix.androidsdk.rest.model.User in project matrix-android-sdk by matrix-org.

the class MXFileStore method saveUsers.

// ================================================================================
// users management
// ================================================================================
/**
 * Flush users list
 */
private void saveUsers() {
    if (!mAreUsersLoaded) {
        // please wait
        return;
    }
    // some updated rooms ?
    if ((mUserIdsToCommit.size() > 0) && (null != mFileStoreHandler)) {
        // get the list
        final HashSet<String> fUserIds = mUserIdsToCommit;
        mUserIdsToCommit = new HashSet<>();
        try {
            final HashSet<User> fUsers;
            synchronized (mUsers) {
                fUsers = new HashSet<>(mUsers.values());
            }
            Runnable r = new Runnable() {

                @Override
                public void run() {
                    mFileStoreHandler.post(new Runnable() {

                        public void run() {
                            if (!isKilled()) {
                                Log.d(LOG_TAG, "saveUsers " + fUserIds.size() + " users (" + fUsers.size() + " known ones)");
                                long start = System.currentTimeMillis();
                                // the users are split into groups to save time
                                HashMap<Integer, ArrayList<User>> usersGroups = new HashMap<>();
                                // finds the group for each updated user
                                for (String userId : fUserIds) {
                                    User user;
                                    synchronized (mUsers) {
                                        user = mUsers.get(userId);
                                    }
                                    if (null != user) {
                                        int hashCode = user.getStorageHashKey();
                                        if (!usersGroups.containsKey(hashCode)) {
                                            usersGroups.put(hashCode, new ArrayList<User>());
                                        }
                                    }
                                }
                                // gather the user to the dedicated group if they need to be updated
                                for (User user : fUsers) {
                                    if (usersGroups.containsKey(user.getStorageHashKey())) {
                                        usersGroups.get(user.getStorageHashKey()).add(user);
                                    }
                                }
                                // save the groups
                                for (int hashKey : usersGroups.keySet()) {
                                    writeObject("saveUser " + hashKey, new File(mStoreUserFolderFile, hashKey + ""), usersGroups.get(hashKey));
                                }
                                Log.d(LOG_TAG, "saveUsers done in " + (System.currentTimeMillis() - start) + " ms");
                            }
                        }
                    });
                }
            };
            Thread t = new Thread(r);
            t.start();
        } catch (OutOfMemoryError oom) {
            Log.e(LOG_TAG, "saveUser : cannot clone the users list" + oom.getMessage());
        }
    }
}
Also used : User(org.matrix.androidsdk.rest.model.User) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) ArrayList(java.util.ArrayList) File(java.io.File) HandlerThread(android.os.HandlerThread)

Aggregations

User (org.matrix.androidsdk.rest.model.User)12 ArrayList (java.util.ArrayList)4 File (java.io.File)2 BannedUser (org.matrix.androidsdk.rest.model.BannedUser)2 HandlerThread (android.os.HandlerThread)1 HashMap (java.util.HashMap)1 LinkedHashMap (java.util.LinkedHashMap)1 List (java.util.List)1 MyUser (org.matrix.androidsdk.data.MyUser)1 IMXEventListener (org.matrix.androidsdk.listeners.IMXEventListener)1 MXEventListener (org.matrix.androidsdk.listeners.MXEventListener)1 ApiCallback (org.matrix.androidsdk.rest.callback.ApiCallback)1 Event (org.matrix.androidsdk.rest.model.Event)1 MatrixError (org.matrix.androidsdk.rest.model.MatrixError)1 RoomMember (org.matrix.androidsdk.rest.model.RoomMember)1 SearchUsersParams (org.matrix.androidsdk.rest.model.search.SearchUsersParams)1 SearchUsersRequestResponse (org.matrix.androidsdk.rest.model.search.SearchUsersRequestResponse)1 SearchUsersResponse (org.matrix.androidsdk.rest.model.search.SearchUsersResponse)1