From 6422f1bb11319072f34ce5dcf99b07a4fd6eaec8 Mon Sep 17 00:00:00 2001 From: giomfo Date: Fri, 28 Nov 2014 15:06:53 +0100 Subject: [PATCH] Bug fix: reset recents on logout --- matrixConsole/matrixConsole/AppDelegate.m | 4 ++-- .../ViewController/RecentsViewController.m | 9 +++++---- .../ViewController/RoomViewController.m | 13 +++++++++++++ 3 files changed, 20 insertions(+), 6 deletions(-) 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 {