@swan-io/react-native-browser
Version:
An easy-to-use in-app browser module for React Native.
56 lines (55 loc) • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.openBrowser = void 0;
var _reactNative = require("react-native");
var _NativeRNSwanBrowser = _interopRequireDefault(require("./NativeRNSwanBrowser"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const emitter = new _reactNative.NativeEventEmitter(_NativeRNSwanBrowser.default);
const convertColorToNumber = color => {
const processed = (0, _reactNative.processColor)(color);
if (typeof processed === "number") {
return processed;
}
};
const openBrowser = (url, options) => {
const {
animationType,
dismissButtonStyle,
onOpen,
onClose
} = options;
const barTintColor = convertColorToNumber(options.barTintColor);
const controlTintColor = convertColorToNumber(options.controlTintColor);
return _NativeRNSwanBrowser.default.open(url, {
...(animationType != null && {
animationType
}),
...(dismissButtonStyle != null && {
dismissButtonStyle
}),
...(barTintColor != null && {
barTintColor
}),
...(controlTintColor != null && {
controlTintColor
})
}).then(() => {
let deeplink;
onOpen?.();
const linkListener = _reactNative.Linking.addListener("url", ({
url
}) => {
deeplink = url;
_NativeRNSwanBrowser.default.close();
});
const closeListener = emitter.addListener("swanBrowserDidClose", () => {
onClose?.(deeplink);
linkListener.remove();
closeListener.remove();
});
});
};
exports.openBrowser = openBrowser;
//# sourceMappingURL=index.js.map