diff --git a/matrixConsole/matrixConsole/AppDelegate.m b/matrixConsole/matrixConsole/AppDelegate.m index 8e570a559..0814a4322 100644 --- a/matrixConsole/matrixConsole/AppDelegate.m +++ b/matrixConsole/matrixConsole/AppDelegate.m @@ -89,11 +89,11 @@ - (void)logout { // Clear cache [MediaManager clearCache]; - // Reset App settings - [[AppSettings sharedSettings] reset]; // Logout Matrix [[MatrixHandler sharedHandler] logout]; [self.masterTabBarController showLoginScreen]; + // Reset App settings + [[AppSettings sharedSettings] reset]; // By default the "Home" tab is focussed [self.masterTabBarController setSelectedIndex:TABBAR_HOME_INDEX]; } diff --git a/matrixConsole/matrixConsole/ViewController/RecentsViewController.m b/matrixConsole/matrixConsole/ViewController/RecentsViewController.m index ebf0be9ec..ec2667b43 100644 --- a/matrixConsole/matrixConsole/ViewController/RecentsViewController.m +++ b/matrixConsole/matrixConsole/ViewController/RecentsViewController.m @@ -196,6 +196,9 @@ if (_preSelectedRoomId) { self.preSelectedRoomId = _preSelectedRoomId; } + } else { + recents = nil; + [self.tableView reloadData]; } } @@ -205,10 +208,8 @@ #pragma mark - KVO -- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context -{ - if ([@"isInitialSyncDone" isEqualToString:keyPath]) - { +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if ([@"isInitialSyncDone" isEqualToString:keyPath]) { dispatch_async(dispatch_get_main_queue(), ^{ [self configureView]; }); diff --git a/matrixConsole/matrixConsole/ViewController/RoomViewController.m b/matrixConsole/matrixConsole/ViewController/RoomViewController.m index 4245b4d43..2f3049477 100644 --- a/matrixConsole/matrixConsole/ViewController/RoomViewController.m +++ b/matrixConsole/matrixConsole/ViewController/RoomViewController.m @@ -127,6 +127,7 @@ NSString *const kCmdResetUserPowerLevel = @"/deop"; if (messagesListener) { [mxRoom removeListener:messagesListener]; messagesListener = nil; + [[AppSettings sharedSettings] removeObserver:self forKeyPath:@"hideUnsupportedMessages"]; } mxRoom = nil; @@ -236,6 +237,7 @@ NSString *const kCmdResetUserPowerLevel = @"/deop"; if (messagesListener && mxRoom) { [mxRoom removeListener:messagesListener]; messagesListener = nil; + [[AppSettings sharedSettings] removeObserver:self forKeyPath:@"hideUnsupportedMessages"]; } // The whole room history is flushed here to rebuild it from the current instant (live) messages = nil; @@ -274,6 +276,7 @@ NSString *const kCmdResetUserPowerLevel = @"/deop"; self.roomNameTextField.enabled = YES; messages = [NSMutableArray array]; + [[AppSettings sharedSettings] addObserver:self forKeyPath:@"hideUnsupportedMessages" options:0 context:nil]; // Register a listener to handle messages messagesListener = [mxRoom listenToEventsOfTypes:mxHandler.mxSession.eventsFilterForMessages onEvent:^(MXEvent *event, MXEventDirection direction, MXRoomState *roomState) { BOOL shouldScrollToBottom = NO; @@ -490,6 +493,16 @@ NSString *const kCmdResetUserPowerLevel = @"/deop"; } } +#pragma mark - KVO + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if ([@"hideUnsupportedMessages" isEqualToString:keyPath]) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self configureView]; + }); + } +} + # pragma mark - Room members - (void)showHideRoomMembers:(id)sender {