react-native-receive-sharing-intent
Version:
A React Native plugin that enables React Native apps to receive sharing photos, videos, text, urls or any other file types from another app.
77 lines (60 loc) • 2.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _reactNative = require("react-native");
var _utils = _interopRequireDefault(require("./utils"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
const {
ReceiveSharingIntent
} = _reactNative.NativeModules;
class ReceiveSharingIntentModule {
constructor() {
_defineProperty(this, "isIos", _reactNative.Platform.OS === "ios");
_defineProperty(this, "utils", new _utils.default());
_defineProperty(this, "isClear", false);
}
getReceivedFiles(handler, errorHandler, protocol = "ShareMedia") {
if (this.isIos) {
_reactNative.Linking.getInitialURL().then(res => {
if (res && res.startsWith(`${protocol}://dataUrl`) && !this.isClear) {
this.getFileNames(handler, errorHandler, res);
}
}).catch(() => {});
_reactNative.Linking.addEventListener("url", res => {
const url = res ? res.url : "";
if (url.startsWith(`${protocol}://dataUrl`) && !this.isClear) {
this.getFileNames(handler, errorHandler, res.url);
}
});
} else {
_reactNative.AppState.addEventListener('change', status => {
if (status === 'active' && !this.isClear) {
this.getFileNames(handler, errorHandler, "");
}
});
if (!this.isClear) this.getFileNames(handler, errorHandler, "");
}
}
clearReceivedFiles() {
this.isClear = true;
}
getFileNames(handler, errorHandler, url) {
if (this.isIos) {
ReceiveSharingIntent.getFileNames(url).then(data => {
let files = this.utils.sortData(data);
handler(files);
}).catch(e => errorHandler(e));
} else {
ReceiveSharingIntent.getFileNames().then(fileObject => {
let files = Object.keys(fileObject).map(k => fileObject[k]);
handler(files);
}).catch(e => errorHandler(e));
}
}
}
var _default = ReceiveSharingIntentModule;
exports.default = _default;
//# sourceMappingURL=ReceiveSharingIntent.js.map