vt-nativescript-advanced-webview
Version:
An advanced webview using Chrome CustomTabs on Android and SFSafariViewController on iOS.
59 lines (58 loc) • 2.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var app = require("tns-core-modules/application");
var color_1 = require("tns-core-modules/color");
var utils_1 = require("tns-core-modules/utils/utils");
var REQUEST_CODE = 1868;
function init() {
co.fitcom.fancywebview.AdvancedWebView.AdvancedWebViewStatics.init(utils_1.ad.getApplicationContext(), true);
}
exports.init = init;
function openAdvancedUrl(options) {
if (!options.url) {
throw new Error('No url set in the Advanced WebView Options object.');
}
app.android.on(app.AndroidApplication.activityResultEvent, function (args) {
var requestCode = args.requestCode;
var resultCode = args.resultCode;
if (requestCode === REQUEST_CODE) {
if (resultCode === android.app.Activity.RESULT_CANCELED) {
if (options.isClosed && typeof options.isClosed === 'function') {
options.isClosed(true);
}
app.android.off(app.AndroidApplication.activityResultEvent);
}
}
});
var activity = app.android.startActivity || app.android.foregroundActivity;
var i = new co.fitcom.fancywebview.AdvancedWebViewListener({
onCustomTabsServiceConnected: function (componentName, client) { },
onServiceDisconnected: function (componentName) { },
onNavigationEvent: function (navigationEvent, extras) {
switch (navigationEvent) {
case 6:
if (options.isClosed && typeof options.isClosed === 'function') {
options.isClosed(true);
}
break;
}
}
});
var wv = new co.fitcom.fancywebview.AdvancedWebView(activity, i);
var intentBuilder = wv.getBuilder();
if (intentBuilder) {
if (options.toolbarColor) {
intentBuilder.setToolbarColor(new color_1.Color(options.toolbarColor).android);
}
if (options.showTitle) {
intentBuilder.setShowTitle(options.showTitle);
}
intentBuilder
.addDefaultShareMenuItem()
.enableUrlBarHiding()
.setInstantAppsEnabled(true);
}
wv.setBuilder(intentBuilder);
wv.loadUrl(options.url);
}
exports.openAdvancedUrl = openAdvancedUrl;