started work on multiple app initialization

This commit is contained in:
Salakar
2017-06-29 17:24:34 +01:00
parent 7db8b07f34
commit 80ae8425ce
14 changed files with 651 additions and 326 deletions

View File

@@ -2,64 +2,7 @@
* @flow
*/
import EventEmitter from 'react-native/Libraries/EventEmitter/EventEmitter';
import Log from '../utils/log';
const logs = {};
const SharedEventEmitter = new EventEmitter();
export class Base {
/**
* Return a namespaced instance of Log
* @returns {*}
*/
get log(): Log {
if (logs[this.namespace]) return logs[this.namespace];
// todo grab log level from global config provider (still todo);
return logs[this.namespace] = new Log(this.namespace, '*');
}
/*
* Proxy functions to shared event emitter instance
* https://github.com/facebook/react-native/blob/master/Libraries/EventEmitter/EventEmitter.js
*/
get sharedEventEmitter () {
return SharedEventEmitter;
}
get addListener() {
return SharedEventEmitter.addListener.bind(SharedEventEmitter);
}
get on() {
return SharedEventEmitter.addListener.bind(SharedEventEmitter);
}
get emit() {
return SharedEventEmitter.emit.bind(SharedEventEmitter);
}
get listeners() {
return SharedEventEmitter.listeners.bind(SharedEventEmitter);
}
hasListeners(eventType: string): Boolean {
const subscriptions = SharedEventEmitter._subscriber.getSubscriptionsForType(eventType);
return subscriptions && subscriptions.length;
}
get removeListener() {
return SharedEventEmitter.removeListener.bind(SharedEventEmitter);
}
get removeAllListeners() {
return SharedEventEmitter.removeAllListeners.bind(SharedEventEmitter);
}
}
// todo move out
export class ReferenceBase extends Base {
constructor(path: string) {
super();
@@ -72,7 +15,7 @@ export class ReferenceBase extends Base {
* @type {String}
* {@link https://firebase.google.com/docs/reference/js/firebase.database.Reference#key}
*/
get key(): string|null {
get key(): string | null {
return this.path === '/' ? null : this.path.substring(this.path.lastIndexOf('/') + 1);
}
}