Merge pull request #29 in BPHVB/mvm_core from feature/server_driven_session_extension to develop

* commit '098aded7edbe0159f51e4bce236c41f445288dd2':
  More aggressive session extension.
  Adjust timing of session timer extension. PR resolution.
  Allow the server to specify whether to extend the session timer.
This commit is contained in:
Pfeil, Scott Robert 2018-08-09 13:54:53 -04:00
commit bbc643040b
3 changed files with 16 additions and 4 deletions

View File

@ -56,4 +56,7 @@
- (nullable instancetype)initWithPageJSON:(nullable NSDictionary *)pageJSON errorObject:(nullable MVMCoreErrorObject *)errorObject;
// Returns whether the load will extend the app session timer based on the response provided by the server.
- (BOOL)extendsAppSession;
@end

View File

@ -9,6 +9,7 @@
#import "MVMCoreLoadObject.h"
#import "MVMCoreErrorObject.h"
#import "MVMCoreJSONConstants.h"
#import "NSDictionary+MFConvenience.h"
@implementation MVMCoreLoadObject
@ -54,4 +55,9 @@
return self;
}
- (BOOL)extendsAppSession {
NSNumber *extendSessionFlag = [self.responseInfoMap objectForKey:@"appSessionExtended" ofType:[NSNumber class]];
return !extendSessionFlag || [extendSessionFlag boolValue]; // Default to YES if the key does not exist.
}
@end

View File

@ -163,7 +163,7 @@
if ([loadObject.operation checkAndHandleForCancellation]) {
return;
}
if (loadObject.pageDataFromCache || loadObject.pageType) {
// Can continue loading with the page.
@ -283,10 +283,8 @@
if ([jsonObject isKindOfClass:[NSDictionary class]]) {
// Update the session timer on a good response.
[[MVMCoreSessionTimeHandler sharedSessionHandler] startSessionTimer];
completionHandler(jsonObject);
} else {
// Error json not correct format.
@ -365,6 +363,11 @@
// Sets the response info map
loadObject.responseInfoMap = [jsonDictionary dict:KeyResponseInfo];
// Update the session timer on a good response.
if (loadObject.extendsAppSession) {
[[MVMCoreSessionTimeHandler sharedSessionHandler] startSessionTimer];
}
// Dismiss any top alerts that server wants us to dismiss
[[MVMCoreAlertHandler sharedAlertHandler] hidePersistentTopAlertViewOfType:[loadObject.responseInfoMap string:@"disableType"]];