@react-native-oh-tpl/react-native-permissions
Version:
An unified permissions API for React Native on HarmonyOS
95 lines (94 loc) • 3.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.methods = void 0;
var _reactNative = require("react-native");
var _NativePermissionsModule = _interopRequireDefault(require("./NativePermissionsModule"));
var _unsupportedPlatformMethods = require("./unsupportedPlatformMethods");
var _utils = require("./utils");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const TIRAMISU_VERSION_CODE = 33;
async function openSettings() {
await _NativePermissionsModule.default.openSettings();
}
function check(permission) {
return _NativePermissionsModule.default.check(permission);
}
async function showRationaleAlert(rationale) {
return new Promise(resolve => {
const {
title,
message,
buttonPositive,
buttonNegative,
buttonNeutral
} = rationale;
const buttons = [];
if (buttonNegative) {
const onPress = () => resolve(false);
buttonNeutral && buttons.push({
text: buttonNeutral,
onPress
});
buttons.push({
text: buttonNegative,
onPress
});
}
buttons.push({
text: buttonPositive,
onPress: () => resolve(true)
});
_reactNative.Alert.alert(title, message, buttons, {
cancelable: false
});
});
}
async function request(permission, rationale) {
if (rationale == null || !(await _NativePermissionsModule.default.shouldShowRequestRationale(permission))) {
return _NativePermissionsModule.default.request(permission);
}
return (typeof rationale === 'function' ? rationale() : showRationaleAlert(rationale)).then(shouldRequest => shouldRequest ? _NativePermissionsModule.default.request(permission) : _NativePermissionsModule.default.check(permission));
}
async function checkNotifications() {
if (_utils.platformVersion < TIRAMISU_VERSION_CODE) {
return _NativePermissionsModule.default.checkNotifications();
}
const status = await check('android.permission.POST_NOTIFICATIONS');
return {
status,
settings: {}
};
}
async function requestNotifications(options) {
if (_utils.platformVersion < TIRAMISU_VERSION_CODE) {
return _NativePermissionsModule.default.requestNotifications(options);
}
const status = await request('android.permission.POST_NOTIFICATIONS');
return {
status,
settings: {}
};
}
function checkMultiple(permissions) {
const dedup = (0, _utils.uniq)(permissions);
return _NativePermissionsModule.default.checkMultiple(dedup);
}
function requestMultiple(permissions) {
const dedup = (0, _utils.uniq)(permissions);
return _NativePermissionsModule.default.requestMultiple(dedup);
}
const methods = exports.methods = {
check,
checkLocationAccuracy: _unsupportedPlatformMethods.checkLocationAccuracy,
checkMultiple,
checkNotifications,
openPhotoPicker: _unsupportedPlatformMethods.openPhotoPicker,
openSettings,
request,
requestLocationAccuracy: _unsupportedPlatformMethods.requestLocationAccuracy,
requestMultiple,
requestNotifications
};
//# sourceMappingURL=methods.android.js.map