BugFix: Chat: Resume on empty room (Please select a room) #128

This commit is contained in:
giomfo 2016-04-06 11:28:12 +02:00
parent cbceed3be5
commit 018f72e58c

View file

@ -95,6 +95,11 @@
Array of `MXSession` instances. Array of `MXSession` instances.
*/ */
NSMutableArray *mxSessionArray; NSMutableArray *mxSessionArray;
/**
The room id of the current handled remote notification (if any)
*/
NSString *remoteNotificationRoomId;
} }
@property (strong, nonatomic) MXKAlert *mxInAppNotification; @property (strong, nonatomic) MXKAlert *mxInAppNotification;
@ -350,6 +355,8 @@
- (void)applicationDidBecomeActive:(UIApplication *)application - (void)applicationDidBecomeActive:(UIApplication *)application
{ {
NSLog(@"[AppDelegate] applicationDidBecomeActive"); NSLog(@"[AppDelegate] applicationDidBecomeActive");
remoteNotificationRoomId = nil;
// Check if the app crashed last time // Check if the app crashed last time
if ([MXLogger crashLog]) if ([MXLogger crashLog])
@ -608,9 +615,19 @@
// Jump to the concerned room only if the app is transitioning from the background // Jump to the concerned room only if the app is transitioning from the background
if (state == UIApplicationStateInactive) if (state == UIApplicationStateInactive)
{ {
NSLog(@"[AppDelegate] didReceiveRemoteNotification : open the roomViewController %@", roomId); // Check whether another remote notification is not already processed
if (!remoteNotificationRoomId)
[self showRoom:roomId withMatrixSession:dedicatedAccount.mxSession]; {
remoteNotificationRoomId = roomId;
NSLog(@"[AppDelegate] didReceiveRemoteNotification: open the roomViewController %@", roomId);
[self showRoom:roomId withMatrixSession:dedicatedAccount.mxSession];
}
else
{
NSLog(@"[AppDelegate] didReceiveRemoteNotification: busy");
}
} }
else if (!_completionHandler && (state == UIApplicationStateBackground)) else if (!_completionHandler && (state == UIApplicationStateBackground))
{ {
@ -619,7 +636,7 @@
NSLog(@"[AppDelegate] : starts a background sync"); NSLog(@"[AppDelegate] : starts a background sync");
[dedicatedAccount backgroundSync:20000 success:^{ [dedicatedAccount backgroundSync:20000 success:^{
NSLog(@"[AppDelegate] : the background sync succeeds"); NSLog(@"[AppDelegate]: the background sync succeeds");
if (_completionHandler) if (_completionHandler)
{ {
@ -627,7 +644,7 @@
_completionHandler = nil; _completionHandler = nil;
} }
} failure:^(NSError *error) { } failure:^(NSError *error) {
NSLog(@"[AppDelegate] : the background sync fails"); NSLog(@"[AppDelegate]: the background sync fails");
if (_completionHandler) if (_completionHandler)
{ {
@ -642,7 +659,7 @@
} }
else else
{ {
NSLog(@"[AppDelegate] : didReceiveRemoteNotification : no linked session / account has been found."); NSLog(@"[AppDelegate]: didReceiveRemoteNotification : no linked session / account has been found.");
} }
} }
completionHandler(UIBackgroundFetchResultNoData); completionHandler(UIBackgroundFetchResultNoData);