2017-06-29 16:24:34 +00:00
|
|
|
/**
|
|
|
|
* @flow
|
|
|
|
*/
|
2017-12-22 15:24:31 +00:00
|
|
|
import { initialiseNativeModuleEventEmitter } from './events';
|
|
|
|
import { getNativeModule, initialiseNativeModule } from './native';
|
2017-06-29 16:24:34 +00:00
|
|
|
|
2017-11-17 16:17:27 +00:00
|
|
|
import type FirebaseApp from '../modules/core/firebase-app';
|
2017-11-23 17:29:40 +00:00
|
|
|
import type { FirebaseModuleName } from '../types';
|
2017-11-17 11:07:52 +00:00
|
|
|
|
2017-07-30 06:34:41 +00:00
|
|
|
const DEFAULTS = {
|
|
|
|
Database: {
|
|
|
|
persistence: false,
|
|
|
|
},
|
2017-07-12 14:49:33 +00:00
|
|
|
};
|
|
|
|
|
2017-06-29 16:24:34 +00:00
|
|
|
export default class ModuleBase {
|
2017-09-25 14:38:54 +00:00
|
|
|
_native: Object;
|
|
|
|
_module: string;
|
|
|
|
_options: Object;
|
|
|
|
_appName: string;
|
|
|
|
_namespace: string;
|
2017-11-17 11:07:52 +00:00
|
|
|
_firebaseApp: FirebaseApp;
|
2017-11-23 17:29:40 +00:00
|
|
|
static _NAMESPACE: FirebaseModuleName;
|
2017-09-25 14:38:54 +00:00
|
|
|
static _NATIVE_MODULE: string;
|
|
|
|
|
2017-07-18 05:04:12 +00:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param firebaseApp
|
|
|
|
* @param options
|
|
|
|
* @param withEventEmitter
|
|
|
|
*/
|
2017-12-22 15:57:33 +00:00
|
|
|
constructor(firebaseApp: FirebaseApp, options: Object, events: string[] = []) {
|
2017-08-17 16:58:28 +00:00
|
|
|
this._module = this.constructor._NATIVE_MODULE.replace('RNFirebase', '');
|
2017-06-29 16:24:34 +00:00
|
|
|
this._firebaseApp = firebaseApp;
|
2017-07-17 16:36:50 +00:00
|
|
|
this._appName = firebaseApp._name;
|
2017-06-29 16:24:34 +00:00
|
|
|
this._namespace = `${this._appName}:${this._module}`;
|
2017-08-17 16:58:28 +00:00
|
|
|
this._options = Object.assign({}, DEFAULTS[this._module] || {}, options);
|
2017-06-29 16:24:34 +00:00
|
|
|
|
2017-07-12 14:49:33 +00:00
|
|
|
// check if native module exists as all native
|
2017-12-22 15:24:31 +00:00
|
|
|
initialiseNativeModule(this);
|
|
|
|
// TODO: Get rid of
|
|
|
|
this._native = getNativeModule(this);
|
2017-07-04 12:05:19 +00:00
|
|
|
|
2017-12-22 15:57:33 +00:00
|
|
|
initialiseNativeModuleEventEmitter(this, events);
|
2017-06-29 16:24:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the FirebaseApp instance for current module
|
|
|
|
* @return {*}
|
|
|
|
*/
|
2017-09-25 14:38:54 +00:00
|
|
|
get app(): FirebaseApp {
|
2017-06-29 16:24:34 +00:00
|
|
|
return this._firebaseApp;
|
|
|
|
}
|
|
|
|
}
|