From 17aaf5e078373ff46cc59d1281429f3bf5781cd0 Mon Sep 17 00:00:00 2001 From: giomfo Date: Mon, 8 Dec 2014 15:22:26 +0100 Subject: [PATCH] Recents-Room details: Handle correctly left rooms --- .../ViewController/RecentsViewController.m | 11 +++-------- .../matrixConsole/ViewController/RoomViewController.m | 6 ++++++ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/matrixConsole/matrixConsole/ViewController/RecentsViewController.m b/matrixConsole/matrixConsole/ViewController/RecentsViewController.m index 1301937dd..c184c793c 100644 --- a/matrixConsole/matrixConsole/ViewController/RecentsViewController.m +++ b/matrixConsole/matrixConsole/ViewController/RecentsViewController.m @@ -199,14 +199,9 @@ recentsListener = [mxHandler.mxSession listenToEventsOfTypes:mxHandler.eventsFilterForMessages onEvent:^(MXEvent *event, MXEventDirection direction, id customObject) { // Consider only live event if (direction == MXEventDirectionForwards) { - // Check user's membership (We will remove left rooms from recents) - BOOL isLeft = NO; - if ([customObject isKindOfClass:[MXRoomState class]]) { - MXRoomState *roomState = (MXRoomState*)customObject; - if (roomState.membership == MXMembershipLeave || roomState.membership == MXMembershipBan) { - isLeft = YES; - } - } + // Check user's membership in live room state (We will remove left rooms from recents) + MXRoom *mxRoom = [mxHandler.mxSession roomWithRoomId:event.roomId]; + BOOL isLeft = (mxRoom == nil || mxRoom.state.membership == MXMembershipLeave || mxRoom.state.membership == MXMembershipBan); // Consider this new event as unread only if the sender is not the user and if the room is not visible BOOL isUnread = (![event.userId isEqualToString:mxHandler.userId] diff --git a/matrixConsole/matrixConsole/ViewController/RoomViewController.m b/matrixConsole/matrixConsole/ViewController/RoomViewController.m index e7a4e900b..97fff9094 100644 --- a/matrixConsole/matrixConsole/ViewController/RoomViewController.m +++ b/matrixConsole/matrixConsole/ViewController/RoomViewController.m @@ -294,6 +294,12 @@ NSString *const kCmdResetUserPowerLevel = @"/deop"; // Handle first live events if (direction == MXEventDirectionForwards) { + // Check user's membership in live room state (Indeed we have to go back on recents when user leaves, or is kicked/banned) + if (mxRoom.state.membership == MXMembershipLeave || mxRoom.state.membership == MXMembershipBan) { + [self.navigationController popViewControllerAnimated:NO]; + return; + } + // We will scroll to bottom after updating tableView only if the most recent message is entirely visible. CGFloat maxPositionY = self.messagesTableView.contentOffset.y + (self.messagesTableView.frame.size.height - self.messagesTableView.contentInset.bottom); shouldScrollToBottom = (maxPositionY >= self.messagesTableView.contentSize.height);