import { useEffect } from 'react'; import ExpoKeepAwake from './ExpoKeepAwake'; const ExpoKeepAwakeTag = 'ExpoKeepAwakeDefaultTag'; // @needsAudit /** * A React hook to keep the screen awake for as long as the owner component is mounted. * The optionally provided `tag` argument is used when activating and deactivating the keep-awake * feature. If unspecified, the default `tag` is used. See the documentation for `activateKeepAwake` * below to learn more about the `tag` argument. * @param tag *Optional* */ export function useKeepAwake(tag: string = ExpoKeepAwakeTag): void { useEffect(() => { activateKeepAwake(tag); return () => deactivateKeepAwake(tag); }, [tag]); } // @needsAudit /** * Prevents the screen from sleeping until `deactivateKeepAwake` is called with the same `tag` value. * * If the `tag` argument is specified, the screen will not sleep until you call `deactivateKeepAwake` * with the same `tag` argument. When using multiple `tags` for activation you'll have to deactivate * each one in order to re-enable screen sleep. If tag is unspecified, the default `tag` is used. * @param tag *Optional* - Tag to lock screen sleep prevention. If not provided, the default tag is used. */ export function activateKeepAwake(tag: string = ExpoKeepAwakeTag): void { if (ExpoKeepAwake.activate) ExpoKeepAwake.activate(tag); } // @needsAudit /** * Releases the lock on screen-sleep prevention associated with the given `tag` value. If `tag` * is unspecified, it defaults to the same default tag that `activateKeepAwake` uses. * @param tag *Optional* - Tag to release the lock on screen sleep prevention. If not provided, * the default tag is used. */ export function deactivateKeepAwake(tag: string = ExpoKeepAwakeTag): void { if (ExpoKeepAwake.deactivate) ExpoKeepAwake.deactivate(tag); }