From ed1f4dddcfbdbc2d16f874d31fb2283d889b6a2d Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Fri, 5 May 2023 13:51:53 -0600 Subject: [PATCH] Handle opening tracking URLs in receipts --- www/assets/js/account.js | 17 +++++ www/assets/js/platform.js | 138 +++++++++++++++++++++----------------- www/pages/receipts.html | 2 +- 3 files changed, 94 insertions(+), 63 deletions(-) diff --git a/www/assets/js/account.js b/www/assets/js/account.js index d1c9e48..08a5f79 100644 --- a/www/assets/js/account.js +++ b/www/assets/js/account.js @@ -324,4 +324,21 @@ function loadReceiptHTMLIntoPopup(receiptid) { app.dialog.alert("There's a server or network problem. Check your Internet connection or try again later.", "Error"); sendErrorReport("Receipts", "Couldn't load receipt", "Server/network problem: " + xhr.status + ": " + xhr.statusText); }, "POST"); +} + +function receiptiframeloadevent() { + $("#receiptvieweriframe").contents().find("a").each(function () { + $(this).attr("data-href", $(this).attr("href")); + $(this).attr("href", "#"); + $(this).on("click", function (evt) { + var href = evt.target.getAttribute("data-href"); + window.parent.openReceiptIframeLink(href); + }); + }); +} + +function openReceiptIframeLink(href) { + if (handleDeepLink(href)) { + app.popup.close(); + } } \ No newline at end of file diff --git a/www/assets/js/platform.js b/www/assets/js/platform.js index 413dc8c..27f129a 100644 --- a/www/assets/js/platform.js +++ b/www/assets/js/platform.js @@ -141,6 +141,81 @@ function setupCordovaBarcodeScanner() { }; } +/** + * Handle a deep link. + * @param {string} href the link + * @returns {boolean} true if handled, false if rejected. + */ +function handleDeepLink(href) { + var link = new URL(href); + if (link.host != "helena.express") { + return false; + } + if (link.hash) { + link.fragment = link.hash.substr(1); + } + switch (link.pathname) { + case "/": + break; + case "/app": + break; + case "/track": + if (link.fragment) { + router.navigate("/track/" + link.fragment); + } else { + router.navigate("/track"); + } + break; + case "/rates": + router.navigate("/rates"); + break; + case "/schedule": + router.navigate("/appointment"); + break; + case "/shop": + router.navigate("/shop"); + break; + case "/pickup": + router.navigate("/send"); + break; + case "/telegram": + case "/telegram/": + router.navigate("/telegram"); + break; + case "/das": + router.navigate("/das"); + break; + case "/das/map": + router.navigate("/das"); + break; + case "/das/pickup": + if (link.fragment) { + sendPickupCode(link.fragment); + } else { + router.navigate("/das"); + } + break; + case "/das/account": + router.navigate("/account"); + break; + case "/mobile": + case "/mobile/": + router.navigate("/mobile"); + break; + case "/postalpoint": + case "/postalpoint/": + router.navigate("/postalpoint"); + break; + case "/money": + router.navigate("/moneyorder"); + break; + default: + openBrowser(link.href); + break; + } + return true; +} + function initCordova() { platform_type = "cordova"; @@ -221,70 +296,9 @@ function initCordova() { } IonicDeeplink.onDeepLink(function (link) { - if (link.host != "helena.express") { - return; - } // Wait a bit so the home page has time to load first. setTimeout(function () { - switch (link.path) { - case "/": - break; - case "/app": - break; - case "/track": - if (link.fragment) { - router.navigate("/track/" + link.fragment); - } else { - router.navigate("/track"); - } - break; - case "/rates": - router.navigate("/rates"); - break; - case "/schedule": - router.navigate("/appointment"); - break; - case "/shop": - router.navigate("/shop"); - break; - case "/pickup": - router.navigate("/send"); - break; - case "/telegram": - case "/telegram/": - router.navigate("/telegram"); - break; - case "/das": - router.navigate("/das"); - break; - case "/das/map": - router.navigate("/das"); - break; - case "/das/pickup": - if (link.fragment) { - sendPickupCode(link.fragment); - } else { - router.navigate("/das"); - } - break; - case "/das/account": - router.navigate("/account"); - break; - case "/mobile": - case "/mobile/": - router.navigate("/mobile"); - break; - case "/postalpoint": - case "/postalpoint/": - router.navigate("/postalpoint"); - break; - case "/money": - router.navigate("/moneyorder"); - break; - default: - openBrowser(link.url); - break; - } + handleDeepLink(link.url); }, 1000); }); }, false); diff --git a/www/pages/receipts.html b/www/pages/receipts.html index 90882d1..9e243cb 100644 --- a/www/pages/receipts.html +++ b/www/pages/receipts.html @@ -62,7 +62,7 @@
Receipt
- + \ No newline at end of file