ReactNativePermissions.ios.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. 'use strict';
  2. var React = require('react-native');
  3. var RNPermissions = React.NativeModules.ReactNativePermissions;
  4. class ReactNativePermissions {
  5. canOpenSettings() {
  6. return RNPermissions.canOpenSettings()
  7. }
  8. openSettings() {
  9. return RNPermissions.openSettings()
  10. }
  11. getPermissionTypes() {
  12. return RNPermissions.PermissionTypes;
  13. }
  14. getPermissionStatus(permission) {
  15. if (RNPermissions.PermissionTypes.includes(permission)) {
  16. return RNPermissions.getPermissionStatus(permission)
  17. } else {
  18. return Promise.reject(`ReactNativePermissions: ${permission} is not a valid permission type`)
  19. }
  20. }
  21. requestPermission(permission, type) {
  22. switch (permission) {
  23. case "location":
  24. return RNPermissions.requestLocation(type)
  25. case "camera":
  26. return RNPermissions.requestCamera();
  27. case "microphone":
  28. return RNPermissions.requestMicrophone();
  29. case "photo":
  30. return RNPermissions.requestPhoto();
  31. case "contacts":
  32. return RNPermissions.requestContacts();
  33. case "event":
  34. return RNPermissions.requestEvent();
  35. case "reminder":
  36. return RNPermissions.requestReminder();
  37. case "bluetooth":
  38. return RNPermissions.requestBluetooth();
  39. case "notification":
  40. return RNPermissions.requestNotification(type)
  41. case "backgroundRefresh":
  42. return Promise.reject('You cannot request backgroundRefresh')
  43. default:
  44. return Promise.reject('invalid type: ' + type)
  45. }
  46. }
  47. //recursive funciton to chain a promises for a list of permissions
  48. checkMultiplePermissions(permissions) {
  49. let i = permissions.length
  50. let that = this
  51. const obj = {}
  52. function processNext() {
  53. i--
  54. let p = permissions[i]
  55. if (!p) {
  56. return obj
  57. }
  58. return that.getPermissionStatus(p)
  59. .then(res => {
  60. obj[p] = res
  61. return processNext()
  62. }).catch(e => {
  63. console.warn(e)
  64. return processNext()
  65. })
  66. }
  67. return processNext()
  68. }
  69. }
  70. export default new ReactNativePermissions();