Search in sources :

Example 11 with User

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

the class MXFileStore method loadUsers.

/**
 * Load the user information from the filesystem..
 */
private void loadUsers() {
    List<String> filenames = listFiles(mStoreUserFolderFile.list());
    long start = System.currentTimeMillis();
    ArrayList<User> users = new ArrayList<>();
    // list the files
    for (String filename : filenames) {
        File messagesListFile = new File(mStoreUserFolderFile, filename);
        Object usersAsVoid = readObject("loadUsers " + filename, messagesListFile);
        if (null != usersAsVoid) {
            try {
                users.addAll((List<User>) usersAsVoid);
            } catch (Exception e) {
                Log.e(LOG_TAG, "loadUsers failed : " + e.toString());
            }
        }
    }
    // update the hash map
    for (User user : users) {
        synchronized (mUsers) {
            User currentUser = mUsers.get(user.user_id);
            if (// not defined
            (null == currentUser) || // tmp user until retrieved it
            currentUser.isRetrievedFromRoomMember() || // newer presence
            (currentUser.getLatestPresenceTs() < user.getLatestPresenceTs())) {
                mUsers.put(user.user_id, user);
            }
        }
    }
    long delta = (System.currentTimeMillis() - start);
    Log.e(LOG_TAG, "loadUsers (" + filenames.size() + " files) : retrieve " + mUsers.size() + " users in " + delta + "ms");
    mStoreStats.put("loadUsers", delta);
    mAreUsersLoaded = true;
    // save any pending save
    saveUsers();
}
Also used : User(org.matrix.androidsdk.rest.model.User) ArrayList(java.util.ArrayList) File(java.io.File)

Example 12 with User

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

the class Room method addEventListener.

// ==============================================================================================================
// Room events dispatcher
// ==============================================================================================================
/**
 * Add an event listener to this room. Only events relative to the room will come down.
 *
 * @param eventListener the event listener to add
 */
public void addEventListener(final IMXEventListener eventListener) {
    // sanity check
    if (null == eventListener) {
        Log.e(LOG_TAG, "addEventListener : eventListener is null");
        return;
    }
    // GA crash : should never happen but got it.
    if (null == mDataHandler) {
        Log.e(LOG_TAG, "addEventListener : mDataHandler is null");
        return;
    }
    // Create a global listener that we'll add to the data handler
    IMXEventListener globalListener = new MXEventListener() {

        @Override
        public void onPresenceUpdate(Event event, User user) {
            // Only pass event through if the user is a member of the room
            if (getMember(user.user_id) != null) {
                try {
                    eventListener.onPresenceUpdate(event, user);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onPresenceUpdate exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onLiveEvent(Event event, RoomState roomState) {
            // Filter out events for other rooms and events while we are joining (before the room is ready)
            if (TextUtils.equals(getRoomId(), event.roomId) && mIsReady) {
                try {
                    eventListener.onLiveEvent(event, roomState);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onLiveEvent exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onLiveEventsChunkProcessed(String fromToken, String toToken) {
            try {
                eventListener.onLiveEventsChunkProcessed(fromToken, toToken);
            } catch (Exception e) {
                Log.e(LOG_TAG, "onLiveEventsChunkProcessed exception " + e.getMessage());
            }
        }

        @Override
        public void onEventSentStateUpdated(Event event) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), event.roomId)) {
                try {
                    eventListener.onEventSentStateUpdated(event);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onEventSentStateUpdated exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onEventDecrypted(Event event) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), event.roomId)) {
                try {
                    eventListener.onEventDecrypted(event);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onDecryptedEvent exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onEventSent(final Event event, final String prevEventId) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), event.roomId)) {
                try {
                    eventListener.onEventSent(event, prevEventId);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onEventSent exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onRoomInitialSyncComplete(String roomId) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), roomId)) {
                try {
                    eventListener.onRoomInitialSyncComplete(roomId);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onRoomInitialSyncComplete exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onRoomInternalUpdate(String roomId) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), roomId)) {
                try {
                    eventListener.onRoomInternalUpdate(roomId);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onRoomInternalUpdate exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onNotificationCountUpdate(String roomId) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), roomId)) {
                try {
                    eventListener.onNotificationCountUpdate(roomId);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onNotificationCountUpdate exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onNewRoom(String roomId) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), roomId)) {
                try {
                    eventListener.onNewRoom(roomId);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onNewRoom exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onJoinRoom(String roomId) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), roomId)) {
                try {
                    eventListener.onJoinRoom(roomId);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onJoinRoom exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onReceiptEvent(String roomId, List<String> senderIds) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), roomId)) {
                try {
                    eventListener.onReceiptEvent(roomId, senderIds);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onReceiptEvent exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onRoomTagEvent(String roomId) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), roomId)) {
                try {
                    eventListener.onRoomTagEvent(roomId);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onRoomTagEvent exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onReadMarkerEvent(String roomId) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), roomId)) {
                try {
                    eventListener.onReadMarkerEvent(roomId);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onReadMarkerEvent exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onRoomFlush(String roomId) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), roomId)) {
                try {
                    eventListener.onRoomFlush(roomId);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onRoomFlush exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onLeaveRoom(String roomId) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), roomId)) {
                try {
                    eventListener.onLeaveRoom(roomId);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onLeaveRoom exception " + e.getMessage());
                }
            }
        }

        @Override
        public void onRoomKick(String roomId) {
            // Filter out events for other rooms
            if (TextUtils.equals(getRoomId(), roomId)) {
                try {
                    eventListener.onRoomKick(roomId);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "onRoomKick exception " + e.getMessage());
                }
            }
        }
    };
    mEventListeners.put(eventListener, globalListener);
    // GA crash
    if (null != mDataHandler) {
        mDataHandler.addListener(globalListener);
    }
}
Also used : IMXEventListener(org.matrix.androidsdk.listeners.IMXEventListener) MXEventListener(org.matrix.androidsdk.listeners.MXEventListener) IMXEventListener(org.matrix.androidsdk.listeners.IMXEventListener) BannedUser(org.matrix.androidsdk.rest.model.BannedUser) User(org.matrix.androidsdk.rest.model.User) Event(org.matrix.androidsdk.rest.model.Event) List(java.util.List) ArrayList(java.util.ArrayList)

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