Skip to content
1 change: 1 addition & 0 deletions android/src/main/java/com/ticketmasterignite/Config.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ object Config {
}
}

// We want to return null to the SDK's Prebuilt Modules if no image overlay text is provided to enable the SDK's default text
fun optionalString(key: String): String? {
return configValues[key]
}
Expand Down
26 changes: 10 additions & 16 deletions ios/Config.swift
Original file line number Diff line number Diff line change
@@ -1,30 +1,24 @@
import Foundation
import React

@objc
final class Config: NSObject {

static let shared = Config()

private var nativeConfig: RCTNativeConfig? {
RCTBridge.current()?.module(forName: "NativeConfig") as? RCTNativeConfig
}


func get(for key: String) -> String {
return nativeConfig?.getConfig(key) ?? ""
return RCTNativeConfig.sharedInstance()?.getConfig(key) ?? ""
}

func set(for key: String, value: String) {
print("Swift set key=\(key) value=\(value)")
nativeConfig?.setConfig(key, value: value)
RCTNativeConfig.sharedInstance()?.setConfig(key, value: value)
}


// We want to return null to the SDK's Prebuilt Modules if no image overlay text is provided to enable the SDK's default text
func optionalString(for key: String) -> String? {
let value = nativeConfig?.getConfig(key)
return value == nil ? nil : value
return RCTNativeConfig.sharedInstance()?.getConfig(key)
}

func getImage(for key: String) -> UIImage? {
return nativeConfig?.getImage(key)
return RCTNativeConfig.sharedInstance()?.getImage(key)
}
}
5 changes: 2 additions & 3 deletions ios/MarketDomain.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@ import TicketmasterFoundation

class MarketDomainObject {
static let shared = MarketDomainObject()

let marketDomain = Config.shared.get(for: "marketDomain")


func getMarketDomain() -> TicketmasterFoundation.MarketDomain {
let marketDomain = Config.shared.get(for: "marketDomain")
return MarketDomain(countryCode: marketDomain.lowercased()) ?? MarketDomain.US
}
}
2 changes: 2 additions & 0 deletions ios/RCTNativeConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ NS_ASSUME_NONNULL_BEGIN

@interface RCTNativeConfig : NSObject <NativeConfigSpec>

+ (nullable instancetype)sharedInstance;

- (NSString *)getConfig:(NSString *)key;
- (UIImage *)getImage:(NSString *)key;
- (void)setConfig:(NSString *)key value:(NSString *)value;
Expand Down
47 changes: 35 additions & 12 deletions ios/RCTNativeConfig.mm
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,64 @@
#import <ReactCommon/RCTTurboModule.h>
#import <TicketmasterIgniteSpecs/TicketmasterIgniteSpecs.h>

static RCTNativeConfig *_sharedInstance = nil;

@implementation RCTNativeConfig {
NSMutableDictionary *_configValues;
NSMutableDictionary<NSString *, NSString *> *_store;
}

- (instancetype)init {
if (self = [super init]) {
_configValues = [NSMutableDictionary new];
_store = [NSMutableDictionary new];
_sharedInstance = self;
}
return self;
}

+ (nullable instancetype)sharedInstance {
return _sharedInstance;
}

- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
(const facebook::react::ObjCTurboModule::InitParams &)params
(const facebook::react::ObjCTurboModule::InitParams &)params
{
return std::make_shared<facebook::react::NativeConfigSpecJSI>(params);
}


- (void)setConfig:(NSString *)key value:(NSString *)value {
_configValues[key] = value;
if (!key) return;
@synchronized (_store) {
if (value) {
_store[key] = value;
} else {
[_store removeObjectForKey:key];
}
}
}

- (void)setImage:(NSString *)key uri:(NSString *)uri {
_configValues[key] = uri;
if (!key) return;
@synchronized (_store) {
if (uri) {
_store[key] = uri;
} else {
[_store removeObjectForKey:key];
}
}
}


- (NSString *)getConfig:(NSString *)key {
return _configValues[key];
if (!key) return nil;
@synchronized (_store) {
return _store[key];
}
}

- (UIImage *)getImage:(NSString *)key {
NSString *imagePath = _configValues[key];
NSString *imagePath;
@synchronized (_store) {
imagePath = _store[key];
}
if (!imagePath) return nil;

NSURL *url = [NSURL URLWithString:imagePath];
Expand All @@ -49,9 +73,8 @@ - (UIImage *)getImage:(NSString *)key {
return [UIImage imageWithContentsOfFile:imagePath];
}

+ (NSString *)moduleName
{
+ (NSString *)moduleName {
return @"NativeConfig";
}

@end
@end
Loading