| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 'use strict';
- var React = require('react-native');
- var RNPermissions = React.NativeModules.ReactNativePermissions;
- class ReactNativePermissions {
- canOpenSettings() {
- return RNPermissions.canOpenSettings()
- }
- openSettings() {
- return RNPermissions.openSettings()
- }
- getPermissionTypes() {
- return RNPermissions.PermissionTypes;
- }
- getPermissionStatus(permission) {
- if (RNPermissions.PermissionTypes.includes(permission)) {
- return RNPermissions.getPermissionStatus(permission)
- } else {
- return Promise.reject(`ReactNativePermissions: ${permission} is not a valid permission type`)
- }
- }
- requestPermission(permission, type) {
- switch (permission) {
- case "location":
- return RNPermissions.requestLocation(type)
- case "camera":
- return RNPermissions.requestCamera();
- case "microphone":
- return RNPermissions.requestMicrophone();
- case "photo":
- return RNPermissions.requestPhoto();
- case "contacts":
- return RNPermissions.requestContacts();
- case "event":
- return RNPermissions.requestEvent();
- case "reminder":
- return RNPermissions.requestReminder();
- case "bluetooth":
- return RNPermissions.requestBluetooth();
- case "notification":
- return RNPermissions.requestNotification(type)
- case "backgroundRefresh":
- return Promise.reject('You cannot request backgroundRefresh')
- default:
- return Promise.reject('invalid type: ' + type)
- }
- }
- //recursive funciton to chain a promises for a list of permissions
- checkMultiplePermissions(permissions) {
- let i = permissions.length
- let that = this
- const obj = {}
- function processNext() {
- i--
- let p = permissions[i]
-
- if (!p) {
- return obj
- }
- return that.getPermissionStatus(p)
- .then(res => {
- obj[p] = res
- return processNext()
- }).catch(e => {
- console.warn(e)
- return processNext()
- })
- }
- return processNext()
- }
- }
- export default new ReactNativePermissions();
|