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();
}
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);
}
}
Aggregations