[ios][app] apps initialized natively now automatically initialized js side - via react module getConstants

This commit is contained in:
Salakar 2017-07-17 18:20:27 +01:00
parent 9a3e22431b
commit 813b91f5ad
3 changed files with 63 additions and 11 deletions

View File

@ -31,11 +31,7 @@ RCT_EXPORT_METHOD(initializeApp:
FIRApp *existingApp = [FIRApp appNamed:name]; FIRApp *existingApp = [FIRApp appNamed:name];
if (!existingApp) { if (!existingApp) {
FIROptions *firOptions = [ FIROptions *firOptions = [[FIROptions alloc] initWithGoogleAppID:[options valueForKey:@"iosAppId"] GCMSenderID:[options valueForKey:@"messagingSenderId"]];
[FIROptions alloc]
initWithGoogleAppID:[options valueForKey:@"iosAppId"]
GCMSenderID:[options valueForKey:@"messagingSenderId"]
];
firOptions.APIKey = [options valueForKey:@"apiKey"]; firOptions.APIKey = [options valueForKey:@"apiKey"];
firOptions.projectID = [options valueForKey:@"projectId"]; firOptions.projectID = [options valueForKey:@"projectId"];
@ -55,4 +51,36 @@ RCT_EXPORT_METHOD(initializeApp:
}); });
} }
- (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 @end

View File

@ -21,22 +21,33 @@ export default class FirebaseApp {
this._options = Object.assign({}, options); this._options = Object.assign({}, options);
// native ios/android to confirm initialized // native ios/android to confirm initialized
this._intialized = false; this._initialized = false;
} }
_initializeApp(local = false) { /**
if (local) { *
* @param native
* @private
*/
_initializeApp(native = false) {
if (native) {
// for apps already initialized natively that we have info // for apps already initialized natively that we have info
// from RN constants. // from RN constants
this._initialized = true; this._initialized = true;
this._nativeInitialized = true;
} else { } else {
FirebaseCoreModule.initializeApp(this._name, this._options, (error, result) => { FirebaseCoreModule.initializeApp(this._name, this._options, (error, result) => {
// todo check error/result // todo check error/result
this._initialized = true; this._initialized = true;
this._nativeInitialized = false;
}); });
} }
} }
/**
*
* @return {*}
*/
get name() { get name() {
if (this._name === INTERNALS.STRINGS.DEFAULT_APP_NAME) { if (this._name === INTERNALS.STRINGS.DEFAULT_APP_NAME) {
// ios and android firebase sdk's return different // ios and android firebase sdk's return different
@ -48,12 +59,25 @@ export default class FirebaseApp {
return this._name; return this._name;
} }
/**
*
* @return {*}
*/
get options() { get options() {
return Object.assign({}, this._options); return Object.assign({}, this._options);
} }
/**
*
* @return {Promise}
*/
delete() { delete() {
// todo if (this._name === INTERNALS.STRINGS.DEFAULT_APP_NAME && this._nativeInitialized) {
return Promise.reject(
new Error('Unable to delete the default native firebase app instance.'),
);
}
return Promise.resolve(); return Promise.resolve();
} }

View File

@ -30,7 +30,7 @@ export default {
* @return {string} * @return {string}
*/ */
ERROR_APP_NOT_INIT(appName) { ERROR_APP_NOT_INIT(appName) {
return `The [${{ appName }}] firebase app has not been initialized!`; return `The [${appName}] firebase app has not been initialized!`;
}, },
/** /**