From 0056de40007059a256db0da56438f5ff2b1cb049 Mon Sep 17 00:00:00 2001 From: Pedro Enrique Date: Thu, 31 Oct 2013 13:11:17 -0700 Subject: [PATCH] [TIMOB-15623] Read properties from encrypted tiapp.json --- iphone/Classes/TiApp.h | 5 +++++ iphone/Classes/TiApp.m | 14 ++++++++++++++ iphone/Classes/TiAppPropertiesProxy.m | 11 +++++++++++ 3 files changed, 30 insertions(+) diff --git a/iphone/Classes/TiApp.h b/iphone/Classes/TiApp.h index 73292145a00..6c6e20115c9 100644 --- a/iphone/Classes/TiApp.h +++ b/iphone/Classes/TiApp.h @@ -100,6 +100,11 @@ TI_INLINE void waitForMemoryPanicCleared() //WARNING: This must never be run o */ +(TiApp*)app; +/** + * Returns a read-only dictionary from tiapp.xml properties + */ ++(NSDictionary *)tiAppProperties; + /* Convenience method to returns root view controller for TiApp instance. @return The application's root view controller. diff --git a/iphone/Classes/TiApp.m b/iphone/Classes/TiApp.m index 6c6643fd7d1..1aa526253a7 100644 --- a/iphone/Classes/TiApp.m +++ b/iphone/Classes/TiApp.m @@ -809,5 +809,19 @@ + (NSDictionary *)dictionaryWithLocalNotification:(UILocalNotification *)notific return [[event copy] autorelease]; } ++(NSDictionary *)tiAppProperties +{ + static NSDictionary* props; + if(props == nil) { + NSString *tiAppPropertiesPath = [[TiHost resourcePath] stringByAppendingPathComponent:@"_ti_app.json"]; + NSData *jsonData = [TiUtils loadAppResource: [NSURL fileURLWithPath:tiAppPropertiesPath]]; + if (jsonData==nil) { + jsonData = [NSData dataWithContentsOfFile:tiAppPropertiesPath]; + } + NSError *error = nil; + props = [[NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error] retain]; + } + return props; +} @end diff --git a/iphone/Classes/TiAppPropertiesProxy.m b/iphone/Classes/TiAppPropertiesProxy.m index 34c173076fd..e5c323176d1 100644 --- a/iphone/Classes/TiAppPropertiesProxy.m +++ b/iphone/Classes/TiAppPropertiesProxy.m @@ -8,6 +8,7 @@ #import "TiAppPropertiesProxy.h" #import "TiUtils.h" +#import "TiApp.h" @implementation TiAppPropertiesProxy { NSData *_defaultsNull; @@ -65,6 +66,10 @@ -(BOOL)propertyExists: (NSString *) key; #define GETPROP \ ENSURE_TYPE(args,NSArray);\ NSString *key = [args objectAtIndex:0];\ +NSString *appProp = [[TiApp tiAppProperties] objectForKey:key]; \ +if(appProp) { \ + return appProp; \ +} \ id defaultValue = [args count] > 1 ? [args objectAtIndex:1] : [NSNull null];\ if (![self propertyExists:key]) return defaultValue; \ @@ -116,11 +121,17 @@ -(id)getObject:(id)args else { return theObject; } + } #define SETPROP \ ENSURE_TYPE(args,NSArray);\ NSString *key = [args objectAtIndex:0];\ +NSString *appProp = [[TiApp tiAppProperties] objectForKey:key]; \ +if(appProp) { \ + DebugLog(@"Property \"%@\" already exist and cannot be overwritten", key); \ + return; \ +} \ id value = [args count] > 1 ? [args objectAtIndex:1] : nil;\ if (value==nil || value==[NSNull null]) {\ [defaultsObject removeObjectForKey:key];\