import { NativeModules, NativeEventEmitter } from 'react-native'; import { RemoteAction } from './types'; const { UtilsModule } = NativeModules; const EventEmitter = new NativeEventEmitter( UtilsModule ); function startActivity() { return UtilsModule.startActivity(); }; function moveActivityToBack() { return UtilsModule.moveActivityToBack(); }; export const Activity = { start: startActivity, moveToBack: moveActivityToBack }; function acquireWakeLock() { return UtilsModule.acquireWakeLock(); }; function releaseWakeLock() { return UtilsModule.releaseWakeLock(); }; export const WakeLock = { acquire: acquireWakeLock, release: releaseWakeLock }; function acquirePartialWakeLock() { return UtilsModule.acquirePartialWakeLock(); }; function releasePartialWakeLock() { return UtilsModule.releasePartialWakeLock(); }; export const PartialWakeLock = { acquire: acquirePartialWakeLock, release: releasePartialWakeLock }; function acquireWifiLock() { return UtilsModule.acquireWifiLock(); }; function releaseWifiLock() { return UtilsModule.releaseWifiLock(); }; export const WifiLock = { acquire: acquireWifiLock, release: releaseWifiLock }; function acquireScreenLock() { return UtilsModule.acquireScreenLock(); }; function releaseScreenLock() { return UtilsModule.releaseScreenLock(); }; export const ScreenLock = { acquire: acquireScreenLock, release: releaseScreenLock }; function setPictureInPictureAspectRatio( width: number, height: number ) { return UtilsModule.setPictureInPictureAspectRatio( width, height ); }; function togglePictureInPictureAutoEnter() { return UtilsModule.togglePictureInPictureAutoEnter(); }; function setPictureInPictureActions( actions: RemoteAction[] ) { // EventEmitter.removeAllListeners(); for ( let i = 0; i < actions.length; i++ ) { let action: RemoteAction = actions[i]; if(typeof(action.icon) !== 'string'){ action.icon = action.icon.uri; } else { action.icon = action.icon } EventEmitter.addListener( 'rn-apputils:pipevent_' + action.id, action.callback ); action.callback = null; }; return UtilsModule.setPictureInPictureActions( actions ); }; function enterPictureInPictureMode() { return UtilsModule.enterPictureInPictureMode(); }; function exitPictureInPictureMode() { return UtilsModule.startActivity(); }; export const PictureInPicture = { setAspectRatio: setPictureInPictureAspectRatio, toggleAutoEnter: togglePictureInPictureAutoEnter, setActions: setPictureInPictureActions, enter: enterPictureInPictureMode, exit: exitPictureInPictureMode };