From a2c56a5be40d7113a23d054dd21bfc845cab5747 Mon Sep 17 00:00:00 2001 From: Salakar Date: Tue, 14 Aug 2018 01:11:14 +0100 Subject: [PATCH] [internals][js] remove legacy `options` arg for module constructors and cleanup constructor args --- src/modules/database/index.js | 22 +++++++++++++--------- src/modules/functions/index.js | 15 +++++++++------ src/utils/apps.js | 11 +++++++---- src/utils/native.js | 8 +++++++- 4 files changed, 36 insertions(+), 20 deletions(-) diff --git a/src/modules/database/index.js b/src/modules/database/index.js index 38807c66..1ac2c181 100644 --- a/src/modules/database/index.js +++ b/src/modules/database/index.js @@ -32,17 +32,21 @@ export default class Database extends ModuleBase { _serviceUrl: string; - constructor(appOrUrl: App | string, options: Object = {}) { + constructor(appOrCustomUrl: App | string, customUrl?: string) { let app; - let serviceUrl; - if (typeof appOrUrl === 'string') { + let url; + + if (typeof appOrCustomUrl === 'string') { app = firebase.app(); - serviceUrl = appOrUrl.endsWith('/') ? appOrUrl : `${appOrUrl}/`; + url = appOrCustomUrl; } else { - app = appOrUrl; - serviceUrl = app.options.databaseURL; + app = appOrCustomUrl; + url = customUrl || app.options.databaseURL; } + // enforce trailing slash + url = url.endsWith('/') ? url : `${url}/`; + super( app, { @@ -52,15 +56,15 @@ export default class Database extends ModuleBase { hasCustomUrlSupport: true, namespace: NAMESPACE, }, - serviceUrl + url ); this._serverTimeOffset = 0; this._serviceUrl = serviceUrl; this._transactionHandler = new TransactionHandler(this); - if (options.persistence) { - getNativeModule(this).setPersistence(options.persistence); + if (app.options.persistence) { + getNativeModule(this).setPersistence(app.options.persistence); } // server time listener diff --git a/src/modules/functions/index.js b/src/modules/functions/index.js index 74122146..32f0c352 100644 --- a/src/modules/functions/index.js +++ b/src/modules/functions/index.js @@ -40,16 +40,19 @@ function errorOrResult(possibleError): HttpsCallablePromise { return Promise.resolve(possibleError); } +/** + * ------------- + * functions() + * ------------- + */ export default class Functions extends ModuleBase { - _region: string; - - constructor(appOrRegion: App, region: string = 'us-central1') { + constructor(appOrRegion: App, region?: string = 'us-central1') { let _app = appOrRegion; let _region = region; - if (typeof appOrRegion === 'string') { + if (typeof _app === 'string') { + _region = _app; _app = firebase.app(); - _region = appOrRegion; } super( @@ -77,7 +80,7 @@ export default class Functions extends ModuleBase { */ httpsCallable(name: string): HttpsCallable { return (data?: any): HttpsCallablePromise => { - const promise = getNativeModule(this).httpsCallable(this._region, name, { + const promise = getNativeModule(this).httpsCallable(name, { data, }); diff --git a/src/utils/apps.js b/src/utils/apps.js index 3326d1fa..08cb7b53 100644 --- a/src/utils/apps.js +++ b/src/utils/apps.js @@ -69,8 +69,8 @@ export default { if (!APP_MODULES[appInstanceIdentifier][namespace]) { APP_MODULES[appInstanceIdentifier][namespace] = new InstanceClass( - customUrlOrRegion || app, - app.options + app, + customUrlOrRegion ); // only check once on new app namespace instance @@ -185,9 +185,12 @@ export default { statics: S, moduleName: FirebaseModuleName ): FirebaseModuleAndStatics { - const getModule = (appOrUrlOrRegion?: App | string): FirebaseModule => { + const getModule = ( + appOrUrlOrRegion?: App | string, + customUrlOrRegion?: string + ): FirebaseModule => { let _app = appOrUrlOrRegion; - let _customUrlOrRegion: ?string = null; + let _customUrlOrRegion: ?string = customUrlOrRegion || null; if (typeof appOrUrlOrRegion === 'string' && namespace === 'database') { _app = null; diff --git a/src/utils/native.js b/src/utils/native.js index 95cdd982..b0548957 100644 --- a/src/utils/native.js +++ b/src/utils/native.js @@ -42,7 +42,13 @@ export const initialiseNativeModule = ( config: FirebaseModuleConfig, customUrlOrRegion: ?string ): Object => { - const { moduleName, hasMultiAppSupport, hasCustomUrlSupport, hasRegionsSupport, namespace } = config; + const { + moduleName, + hasMultiAppSupport, + hasCustomUrlSupport, + hasRegionsSupport, + namespace, + } = config; const nativeModule = NativeModules[moduleName]; const key = nativeModuleKey(module);