UNPKG

react-native-navigationbar-obsever

Version:
78 lines (62 loc) 1.97 kB
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; }, }