From 3b2b3070c2e090277aabe61358198f235502b7d5 Mon Sep 17 00:00:00 2001 From: "Black Box Embedded, LLC" <64652300+blackboxembedded@users.noreply.github.com> Date: Sun, 21 Aug 2022 15:20:33 -0600 Subject: [PATCH] Backurl fixes (#3193) * Switch from canOpenURL to openURL Signed-off-by: keithconger * Fix backurl support Signed-off-by: keithconger * Return nil if backURL is not valid Signed-off-by: keithconger Signed-off-by: keithconger --- android/src/com/mapswithme/maps/MwmActivity.java | 2 +- android/src/com/mapswithme/maps/intent/Factory.java | 9 +++++++++ iphone/Maps/Classes/MapViewController.mm | 9 ++++----- iphone/Maps/Core/DeepLink/DeepLinkHandler.swift | 8 ++++---- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index acde9d75a0..c102286ce4 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -123,7 +123,7 @@ public class MwmActivity extends BaseMwmFragmentActivity { public static final String EXTRA_TASK = "map_task"; public static final String EXTRA_LAUNCH_BY_DEEP_LINK = "launch_by_deep_link"; - public static final String EXTRA_BACK_URL = "back_url"; + public static final String EXTRA_BACK_URL = "backurl"; private static final String EXTRA_CONSUMED = "mwm.extra.intent.processed"; private static final String[] DOCKED_FRAGMENTS = { SearchFragment.class.getName(), diff --git a/android/src/com/mapswithme/maps/intent/Factory.java b/android/src/com/mapswithme/maps/intent/Factory.java index 7032a09adf..49ed343de5 100644 --- a/android/src/com/mapswithme/maps/intent/Factory.java +++ b/android/src/com/mapswithme/maps/intent/Factory.java @@ -206,6 +206,15 @@ public class Factory if (!result.isSuccess()) return false; + final Uri uri = Uri.parse(getUrl()); + final String backUrl = uri.getQueryParameter("backurl"); + if (!TextUtils.isEmpty(backUrl)) + { + Intent intent = target.getIntent(); + if (intent != null) + intent.putExtra(MwmActivity.EXTRA_BACK_URL, backUrl); + } + switch (result.getUrlType()) { case ParsingResult.TYPE_INCORRECT: diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index 1c951ea190..03d93c7e8e 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -719,11 +719,10 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; } - (void)goBack { - NSString *backURL = [DeepLinkHandler.shared getBackUrl]; - BOOL canOpenURL = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:backURL]]; - if (canOpenURL){ - [[UIApplication sharedApplication] openURL:[NSURL URLWithString:backURL] options:@{} completionHandler:nil]; - } + NSString *backURL = [DeepLinkHandler.shared getBackUrl]; + if (backURL != nil) { + [[UIApplication sharedApplication] openURL:[NSURL URLWithString: backURL] options:@{} completionHandler:nil]; + } } @end diff --git a/iphone/Maps/Core/DeepLink/DeepLinkHandler.swift b/iphone/Maps/Core/DeepLink/DeepLinkHandler.swift index 38a4c523da..1928dcba98 100644 --- a/iphone/Maps/Core/DeepLink/DeepLinkHandler.swift +++ b/iphone/Maps/Core/DeepLink/DeepLinkHandler.swift @@ -33,10 +33,10 @@ url = nil } - func getBackUrl() -> String { - guard let urlString = url?.absoluteString else { return "" } - guard let url = URLComponents(string: urlString) else { return "" } - return (url.queryItems?.first(where: { $0.name == "backurl" })?.value ?? "") + func getBackUrl() -> String? { + guard let urlString = url?.absoluteString else { return nil } + guard let url = URLComponents(string: urlString) else { return nil } + return (url.queryItems?.first(where: { $0.name == "backurl" })?.value ?? nil) } func handleDeepLink() -> Bool {