[BREAKGLASS] Append-only mirror of github.com/bluewallet/react-native-idle-timer
Go to file
ATNASGDWNGTH bc344737a1
feat: tag every call to disable the idle timer and expose static method for non react-native usage (#31)
add support for tagging calls and native code usage

---------

Co-authored-by: Marc Shilling <marcshilling@gmail.com>
2023-02-26 14:35:24 -05:00
android feat: tag every call to disable the idle timer and expose static method for non react-native usage (#31) 2023-02-26 14:35:24 -05:00
ios feat: tag every call to disable the idle timer and expose static method for non react-native usage (#31) 2023-02-26 14:35:24 -05:00
.gitignore Add standard react-native gitignore for js, ios, and android projects 2016-10-22 14:31:21 -07:00
index.d.ts feat: tag every call to disable the idle timer and expose static method for non react-native usage (#31) 2023-02-26 14:35:24 -05:00
index.js feat: tag every call to disable the idle timer and expose static method for non react-native usage (#31) 2023-02-26 14:35:24 -05:00
LICENSE.md lets see if this works 2016-04-21 15:48:10 -04:00
package.json 2.1.7 2021-09-16 14:08:50 -04:00
react-native-idle-timer.podspec fix: xcode 12 compatibility (#24) 2020-09-29 11:26:52 -04:00
README.md feat: tag every call to disable the idle timer and expose static method for non react-native usage (#31) 2023-02-26 14:35:24 -05:00

react-native-idle-timer

A cross-platform bridge that allows you to enable and disable the screen idle timer in your React Native app

Install

npm install react-native-idle-timer@latest --save

Automatically

react-native link react-native-idle-timer

Manually

iOS
  1. In the XCode's "Project navigator", right click on your project's Libraries folder ➜ Add Files to <...>
  2. Go to node_modulesreact-native-idle-timerios ➜ select RNIdleTimer.xcodeproj
  3. Add libRNIdleTimer.a to Build Phases -> Link Binary With Libraries
Android
  1. in android/settings.gradle
...
include ':react-native-idle-timer'
project(':react-native-idle-timer').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-idle-timer/android')
  1. in android/app/build.gradle add:
dependencies {
  ...
  compile project(':react-native-idle-timer')
}
  1. and finally, in android/src/main/java/com/{YOUR_APP_NAME}/MainActivity.java add:
//...
import com.marcshilling.idletimer.IdleTimerPackage; // <--- This!

//...
@Override
protected List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(
    new MainReactPackage(),
    new IdleTimerPackage() // <---- and This!
  );
}

Usage

In your React Native javascript code, bring in the native module:

import IdleTimerManager from 'react-native-idle-timer';

To disable the idle timer while a certain component is mounted:

Class component

componentWillMount() {
  IdleTimerManager.setIdleTimerDisabled(true);
}

componentWillUnmount() {
  IdleTimerManager.setIdleTimerDisabled(false);
}

Function component

useEffect(() => {
  IdleTimerManager.setIdleTimerDisabled(true);

  return () => IdleTimerManager.setIdleTimerDisabled(false);
}, [])

If you have multiple components that are responsible for interacting with the idle timer, you can pass a tag as the second parameter:

useEffect(() => {
  IdleTimerManager.setIdleTimerDisabled(true, "video");

  return () => IdleTimerManager.setIdleTimerDisabled(false, "video");
}, [])

If you need to interact from the native Android or iOS side:

Android

IdleTimerManager.activate(activity, "video");
IdleTimerManager.deactivate(activity, "video");

iOS

[IdleTimerManager activate:@"video"];
[IdleTimerManager deactivate:@"video"];