forked from mockingbot/react-native-immersive
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathindex.js
More file actions
30 lines (26 loc) · 998 Bytes
/
index.js
File metadata and controls
30 lines (26 loc) · 998 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import { NativeModules, DeviceEventEmitter, Platform } from 'react-native'
import RNImmersive from './NativeRNImmersive'
const unSupportedError = __DEV__
? () => { throw new Error('[react-native-immersive] should not be called on iOS') }
: () => {}
let isListenerEnabled = false
let emitterSubscription=null;
const Immersive = {
on: () => RNImmersive.setImmersive(true),
off: () => RNImmersive.setImmersive(false),
setImmersive: (isOn) => RNImmersive.setImmersive(isOn),
getImmersive: async () => RNImmersive.getImmersive(), // do not always match actual display state
addImmersiveListener: (listener) => {
emitterSubscription= DeviceEventEmitter.addListener('@@IMMERSIVE_STATE_CHANGED', listener)
if (isListenerEnabled) return
isListenerEnabled = true
RNImmersive.addImmersiveListener()
},
removeImmersiveListener: (listener) => {
if(emitterSubscription!=null){
emitterSubscription.remove();
}
}
}
export { Immersive }
export default Immersive