react-native-firebase/ios/RNFirebase/RNFirebase.m

87 lines
3.0 KiB
Mathematica
Raw Normal View History

2017-03-09 15:26:28 +00:00
#import "RNFirebase.h"
#import "FirebaseCore/FirebaseCore.h"
2017-03-09 15:26:28 +00:00
@implementation RNFirebase
RCT_EXPORT_MODULE(RNFirebase);
2017-03-09 15:26:28 +00:00
- (id)init {
2017-03-09 15:26:28 +00:00
self = [super init];
if (self != nil) {
NSLog(@"Setting up RNFirebase instance");
}
return self;
}
- (NSArray<NSString *> *)supportedEvents {
return @[];
2017-03-09 15:26:28 +00:00
}
/**
* Initialize a new firebase app instance or ignore if currently exists.
* @return
*/
RCT_EXPORT_METHOD(initializeApp:
(NSString *) name
options:
(NSDictionary *) options
callback:
(RCTResponseSenderBlock) callback) {
dispatch_sync(dispatch_get_main_queue(), ^{
FIRApp *existingApp = [FIRApp appNamed:name];
if (!existingApp) {
FIROptions *firOptions = [[FIROptions alloc] initWithGoogleAppID:[options valueForKey:@"appId"] GCMSenderID:[options valueForKey:@"messagingSenderId"]];
firOptions.APIKey = [options valueForKey:@"apiKey"];
firOptions.projectID = [options valueForKey:@"projectId"];
firOptions.clientID = [options valueForKey:@"clientId"];
firOptions.trackingID = [options valueForKey:@"trackingId"];
firOptions.databaseURL = [options valueForKey:@"databaseURL"];
firOptions.storageBucket = [options valueForKey:@"storageBucket"];
firOptions.androidClientID = [options valueForKey:@"androidClientId"];
firOptions.deepLinkURLScheme = [options valueForKey:@"deepLinkURLScheme"];
firOptions.bundleID = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"];
[FIRApp configureWithName:name options:firOptions];
}
// todo expand on callback result
callback(@[[NSNull null], @{@"result": @"success"}]);
});
}
- (NSDictionary *)constantsToExport {
NSMutableDictionary *constants = [NSMutableDictionary new];
NSDictionary *firApps = [FIRApp allApps];
NSMutableArray *appsArray = [NSMutableArray new];
for (id key in firApps) {
NSMutableDictionary * appOptions = [NSMutableDictionary new];
FIRApp *firApp = firApps[key];
FIROptions *firOptions = [firApp options];
appOptions[@"name"] = firApp.name;
appOptions[@"apiKey"] = firOptions.APIKey;
appOptions[@"applicationId"] = firOptions.googleAppID;
appOptions[@"databaseUrl"] = firOptions.databaseURL;
appOptions[@"messagingSenderId"] = firOptions.GCMSenderID;
appOptions[@"projectId"] = firOptions.projectID;
appOptions[@"storageBucket"] = firOptions.storageBucket;
// missing from android sdk / ios only:
appOptions[@"clientId"] = firOptions.clientID;
appOptions[@"trackingId"] = firOptions.trackingID;
appOptions[@"androidClientID"] = firOptions.androidClientID;
appOptions[@"deepLinkUrlScheme"] = firOptions.deepLinkURLScheme;
[appsArray addObject:appOptions];
NSLog(@"test");
}
constants[@"apps"] = appsArray;
return constants;
}
@end