Flashlight support on React Native
npm install react-native-lanternFlashlight support on React Native
npm i react-native-lantern
npx react-native link react-native-lantern (use npx react-native unlink react-native-lantern to uninstall)
#### Android
1. Open up android/app/src/main/java/[...]/MainApplication.java
- Add import com.reactnative.lantern.ReactNativeLanternPackage; to the imports at the top of the file
2. Append the following lines to android/settings.gradle:
```
include ':react-native-lantern'
project(':react-native-lantern').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-lantern/android')
android/app/build.gradle
3. Insert the following lines inside the dependencies block in :`
`
compile project(':react-native-lantern')
javascript
import React, { useState, useEffect, useCallback } from 'react';
import { View, Button } from 'react-native';
import lantern from 'react-native-lantern';const Main = () => {
const [isDisabled, setDisabled] = useState(true);
const [isTurnOn, setTurnState] = useState(false);
useEffect(() => {
// call on change turn state (fire on subscribe, return current turn state)
const unsubscribe = lantern.subscribe('onTurn', (event) => setTurnState(event.value));
return unsubscribe;
}, []);
useEffect(() => {
(async () => {
// initialize module
await lantern.ready();
setDisabled(false);
})();
}, []);
const onPress = useCallback(async () => {
if (isTurnOn) {
await lantern.turnOff();
} else {
await lantern.turnOn();
}
// or
await lantern.turn(!isTurnOn)
}, [isTurnOn]); return (
);
}
`API
$3
Initialize flashlight. This method should be called at the very beginning, before calling other methods.
$3
Change turn (on/off).
$3
Turn on flashlight.
$3
Turn off flashlight.
$3
Subscribing to event. Use the
onTurn event to subscribe to a state change turnState.FAQ
$3
This is due to the fact that when running Jest tests, there is no native implementation of the module.
You need to add a mock file:
`
// __mocks__/react-native-lantern.ts
const lanternMockModule = {
ready: jest.fn(() => Promise.resolve()),
turn: jest.fn(() => Promise.resolve()),
turnOn: jest.fn(() => Promise.resolve()),
turnOff: jest.fn(() => Promise.resolve()),
subscribe: jest.fn(() => () => {}),
};export default lanternMockModule;
``