From 8db4de41e41f1983ac71f618fa29ce70e3d09eb5 Mon Sep 17 00:00:00 2001 From: Kevin Gozali Date: Thu, 30 May 2019 21:39:30 -0700 Subject: [PATCH] TM Spec: relax PermissionsAndroid enforcement Summary: Some modules accessed PermissionsAndroid even in iOS, causing redbox. Let's relax the enforcement, then invariant() on the callsites instead. Reviewed By: yungsters Differential Revision: D15572716 fbshipit-source-id: 4a2edea608ab27727e88f0f246ecb9cdcf5a5329 --- .../NativePermissionsAndroid.js | 2 +- .../PermissionsAndroid/PermissionsAndroid.js | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Libraries/PermissionsAndroid/NativePermissionsAndroid.js b/Libraries/PermissionsAndroid/NativePermissionsAndroid.js index 025f9af1841..4212164d8ba 100644 --- a/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +++ b/Libraries/PermissionsAndroid/NativePermissionsAndroid.js @@ -56,4 +56,4 @@ export interface Spec extends TurboModule { ) => Promise<{[permission: PermissionType]: PermissionStatus}>; } -export default TurboModuleRegistry.getEnforcing('PermissionsAndroid'); +export default TurboModuleRegistry.get('PermissionsAndroid'); diff --git a/Libraries/PermissionsAndroid/PermissionsAndroid.js b/Libraries/PermissionsAndroid/PermissionsAndroid.js index 1b414e71165..427fb21c8a1 100644 --- a/Libraries/PermissionsAndroid/PermissionsAndroid.js +++ b/Libraries/PermissionsAndroid/PermissionsAndroid.js @@ -11,10 +11,11 @@ 'use strict'; import NativeDialogManagerAndroid from '../NativeModules/specs/NativeDialogManagerAndroid'; -const NativeModules = require('../BatchedBridge/NativeModules'); const Platform = require('../Utilities/Platform'); import NativePermissionsAndroid from './NativePermissionsAndroid'; +import invariant from 'invariant'; + import type { PermissionStatus, PermissionType, @@ -90,6 +91,11 @@ class PermissionsAndroid { return Promise.resolve(false); } + invariant( + NativePermissionsAndroid, + 'PermissionsAndroid is not installed correctly.', + ); + return NativePermissionsAndroid.checkPermission(permission); } @@ -106,6 +112,12 @@ class PermissionsAndroid { ); return Promise.resolve(false); } + + invariant( + NativePermissionsAndroid, + 'PermissionsAndroid is not installed correctly.', + ); + return NativePermissionsAndroid.checkPermission(permission); } @@ -158,6 +170,11 @@ class PermissionsAndroid { return Promise.resolve(this.RESULTS.DENIED); } + invariant( + NativePermissionsAndroid, + 'PermissionsAndroid is not installed correctly.', + ); + if (rationale) { const shouldShowRationale = await NativePermissionsAndroid.shouldShowRequestPermissionRationale( permission, @@ -197,6 +214,11 @@ class PermissionsAndroid { return Promise.resolve({}); } + invariant( + NativePermissionsAndroid, + 'PermissionsAndroid is not installed correctly.', + ); + return NativePermissionsAndroid.requestMultiplePermissions(permissions); } }