diff --git a/MVMCore/MVMCore/Categories/NSDictionary+MFConvenience.h b/MVMCore/MVMCore/Categories/NSDictionary+MFConvenience.h index ed5931f..6ae8fc6 100644 --- a/MVMCore/MVMCore/Categories/NSDictionary+MFConvenience.h +++ b/MVMCore/MVMCore/Categories/NSDictionary+MFConvenience.h @@ -24,6 +24,9 @@ - (CGFloat)floatForKey:(nonnull id)key; - (double)doubleForKey:(nonnull id)key; +// Not strict, can accept either string or boolean. +- (BOOL)lenientBoolForKey:(nonnull id)key; + // Gets an object that is nested using a series of keys or indexes to reach it. // All keys should be of type NSString and is used for nested dictionaries. // All indexes should be of type NSNumber and is used for nested arrays. diff --git a/MVMCore/MVMCore/Categories/NSDictionary+MFConvenience.m b/MVMCore/MVMCore/Categories/NSDictionary+MFConvenience.m index 8de5180..f4e087d 100644 --- a/MVMCore/MVMCore/Categories/NSDictionary+MFConvenience.m +++ b/MVMCore/MVMCore/Categories/NSDictionary+MFConvenience.m @@ -32,6 +32,15 @@ return [[self objectForKey:key ofType:[NSNumber class]] boolValue]; } +- (BOOL)lenientBoolForKey:(nonnull id)key { + NSObject *object = [self objectForKey:key]; + if ([object isKindOfClass:[NSString class]]) { + return [((NSString *)object) isEqualToString:@"true"]; + } else { + return [((NSNumber *)([object isKindOfClass:[NSNumber class]] ? object : nil)) boolValue]; + } +} + - (CGFloat)floatForKey:(nonnull id)key { return [[self objectForKey:key ofType:[NSNumber class]] floatValue]; } diff --git a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadObject.h b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadObject.h index 014e4ba..6699e27 100644 --- a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadObject.h +++ b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadObject.h @@ -23,6 +23,9 @@ // The data for hte page that was loaded @property (nullable, strong, nonatomic) NSDictionary *pageJSON; +// Contains the button map +@property (nullable, nonatomic, strong, readonly) NSDictionary *buttonMap; + // the modules that are needed @property (nullable, strong, nonatomic) NSDictionary *modulesJSON; diff --git a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadObject.m b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadObject.m index 388f911..5c56b3a 100644 --- a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadObject.m +++ b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadObject.m @@ -22,6 +22,10 @@ return self; } +- (NSDictionary *)buttonMap { + return [self.pageJSON dict:KeyButtonMap]; +} + - (nullable instancetype)initWithRequestParameters:(nullable MVMCoreRequestParameters *)requestParameters dataForPage:(nullable NSDictionary *)dataForPage delegate:(nullable NSObject*)delegate { if (self = [self initWithDelegate:delegate]) { self.requestParameters = requestParameters; diff --git a/MVMCore/MVMCore/LoadHandling/MVMCoreRequestParameters.m b/MVMCore/MVMCore/LoadHandling/MVMCoreRequestParameters.m index 8524bf3..b72132a 100644 --- a/MVMCore/MVMCore/LoadHandling/MVMCoreRequestParameters.m +++ b/MVMCore/MVMCore/LoadHandling/MVMCoreRequestParameters.m @@ -67,6 +67,7 @@ if (self = [self initWithPageType:[actionMap stringForKey:KeyPageType] additionalModules:[actionMap array:KeyModuleList] extraParameters:[actionMap dict:KeyExtraParameters]]) { self.contextRoot = [actionMap string:KeyContextRoot]; self.actionMap = actionMap; + self.customTimeoutTime = [actionMap objectForKey:@"customTimeoutTime" ofType:[NSNumber class]]; self.openSupportPanel = [actionMap boolForKey:KeyOpenSupport]; // Right now server is sending default.... can't uncomment this until they remove default @@ -132,6 +133,7 @@ copyObject.alternateBaseURL = self.alternateBaseURL; copyObject.openSupportPanel = self.openSupportPanel; copyObject.imageData = self.imageData; + copyObject.customTimeoutTime = self.customTimeoutTime; return copyObject; } diff --git a/MVMCore/MVMCore/MainStructure/PanelProtocol.h b/MVMCore/MVMCore/MainStructure/PanelProtocol.h index 5ab0ae3..2db89c7 100644 --- a/MVMCore/MVMCore/MainStructure/PanelProtocol.h +++ b/MVMCore/MVMCore/MainStructure/PanelProtocol.h @@ -14,6 +14,9 @@ @optional +// The panel can return if it should be available or not. +- (BOOL)panelAvailable; + - (void)panel:(UIViewController *_Nullable)panel viewWillAppear:(BOOL)animated; - (void)panel:(UIViewController *_Nullable)panel viewDidAppear:(BOOL)animated; - (void)panel:(UIViewController *_Nullable)panel viewWillDisappear:(BOOL)animated;