react-native-share
Version:
Social share, sending simple data to other apps.
46 lines (45 loc) • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _reactNative = require("react-native");
var _NativeRNShare = _interopRequireDefault(require("../../codegenSpec/NativeRNShare"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const ANDROID_KIT_KAT_SDK_VERSION = 19;
const androidPermissionRequestRequired = (typeof _reactNative.Platform.Version === 'string' ? parseInt(_reactNative.Platform.Version, 10) : _reactNative.Platform.Version) < ANDROID_KIT_KAT_SDK_VERSION;
const requireAndAskPermissions = async options => {
if ((options.url || options.urls) && _reactNative.Platform.OS === 'android') {
const urls = options.urls || (options.url ? [options.url] : []);
try {
const resultArr = await Promise.all(urls.map(url => new Promise((resolve, reject) => {
_NativeRNShare.default.isBase64File(url).then(isBase64 => {
resolve(isBase64);
}).catch(error => {
reject(error);
});
})));
const requirePermission = resultArr.includes(true);
if (!requirePermission) {
return Promise.resolve(true);
}
const hasPermission = await _reactNative.PermissionsAndroid.check(_reactNative.PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE);
if (hasPermission) {
return Promise.resolve(true);
}
if (androidPermissionRequestRequired) {
const result = await _reactNative.PermissionsAndroid.request(_reactNative.PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE);
if (result === _reactNative.PermissionsAndroid.RESULTS.GRANTED) {
return Promise.resolve(true);
}
throw new Error('Write Permission not available');
}
} catch (e) {
return Promise.reject(e);
}
}
return Promise.resolve(true);
};
var _default = requireAndAskPermissions;
exports.default = _default;
//# sourceMappingURL=requireAndAskPermissions.js.map