theta-client-react-native
Version:
This library provides a way to control RICOH THETA using.
46 lines • 1.48 kB
JavaScript
import { NativeEventEmitter } from 'react-native';
import ThetaClientReactNative from '../NativeThetaClientReactNative';
export class NotifyController {
static _instance = new NotifyController();
static get instance() {
return NotifyController._instance;
}
eventEmitter = undefined;
eventListener = undefined;
notifyList = new Map();
init() {
this.notifyList.clear();
if (this.eventListener == null) {
this.eventListener = this.addNotifyListener(notify => {
var _this$notifyList$get;
(_this$notifyList$get = this.notifyList.get(notify.name)) === null || _this$notifyList$get === void 0 || _this$notifyList$get(notify);
});
}
}
isInit() {
return this.eventListener != null;
}
release() {
var _this$eventListener;
(_this$eventListener = this.eventListener) === null || _this$eventListener === void 0 || _this$eventListener.remove();
this.eventListener = undefined;
this.eventEmitter = undefined;
this.notifyList.clear();
}
addNotify(name, callback) {
this.notifyList.set(name, callback);
}
removeNotify(name) {
this.notifyList.delete(name);
}
existsNotify(name) {
return this.notifyList.has(name);
}
addNotifyListener(callback) {
if (this.eventEmitter == null) {
this.eventEmitter = new NativeEventEmitter(ThetaClientReactNative);
}
return this.eventEmitter.addListener('ThetaNotify', callback);
}
}
//# sourceMappingURL=notify-controller.js.map