react-native-navigationbar-obsever
Version:
Android-NvagationShowing-Listener
78 lines (62 loc) • 1.97 kB
JavaScript
var NavigationbarObsever = require('react-native').NativeModules.NavigationbarObseverModule;
var DeviceEventEmitter = require('react-native').DeviceEventEmitter;
var listeners = {};
var navigationbarDidShowChange = 'navigationbarDidShowChange';
var id = 0;
var META = '__listener_id';
function getKey(listener) {
if (!listener.hasOwnProperty(META)) {
if (!Object.isExtensible(listener)) {
return 'F';
}
Object.defineProperty(listener, META, {
value: 'L' + ++id,
});
}
return listener[META];
};
module.exports = {
bindListener(cb) {
NavigationbarObsever.bindListener((error, isOK) => {
cb(error, isOK);
});
},
unbindListener() {
NavigationbarObsever.unbindListener();
},
getNavigationbarSize(cb) {
NavigationbarObsever.getNavigationbarSize((error, size) => {
cb(error, size);
});
},
isNavigationbarShow(cb) {
NavigationbarObsever.isNavigationbarShow((error, navigationbarShow) => {
cb(error, navigationbarShow);
});
},
isRomNavigationbarShow(cb) {
NavigationbarObsever.isRomNavigationbarShow((error, romNavigationbarShow) => {
cb(error, romNavigationbarShow);
});
},
isRealNavigationbarShow(cb) {
NavigationbarObsever.isRealNavigationbarShow((error, realNavigationbarShow) => {
cb(error, realNavigationbarShow);
});
},
addNavigationbarDidShowChangeListener(cb) {
var key = getKey(cb);
listeners[key] = DeviceEventEmitter.addListener(navigationbarDidShowChange,
(body) => {
cb(body.navigationbarShow);
});
},
removeNavigationbarDidShowChangeListener(cb) {
var key = getKey(cb);
if (!listeners[key]) {
return;
}
listeners[key].remove();
listeners[key] = null;
},
}