Search in sources :

Example 1 with IMXEventListener

use of org.matrix.androidsdk.listeners.IMXEventListener 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)

Example 2 with IMXEventListener

use of org.matrix.androidsdk.listeners.IMXEventListener in project matrix-android-sdk by matrix-org.

the class User method addEventListener.

/**
 * 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) {
    // 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 for this user
            if (user.user_id.equals(user_id)) {
                eventListener.onPresenceUpdate(event, user);
            }
        }
    };
    getEventListeners().put(eventListener, globalListener);
    // the handler could be set later
    if (null != mDataHandler) {
        mDataHandler.addListener(globalListener);
    } else {
        getPendingListeners().add(globalListener);
    }
}
Also used : IMXEventListener(org.matrix.androidsdk.listeners.IMXEventListener) IMXEventListener(org.matrix.androidsdk.listeners.IMXEventListener) MXEventListener(org.matrix.androidsdk.listeners.MXEventListener)

Aggregations

IMXEventListener (org.matrix.androidsdk.listeners.IMXEventListener)2 MXEventListener (org.matrix.androidsdk.listeners.MXEventListener)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 BannedUser (org.matrix.androidsdk.rest.model.BannedUser)1 Event (org.matrix.androidsdk.rest.model.Event)1 User (org.matrix.androidsdk.rest.model.User)1