diff --git a/android/src/com/mapswithme/maps/DownloadResourcesLegacyActivity.java b/android/src/com/mapswithme/maps/DownloadResourcesLegacyActivity.java index e9e17ccafc..b25491eb42 100644 --- a/android/src/com/mapswithme/maps/DownloadResourcesLegacyActivity.java +++ b/android/src/com/mapswithme/maps/DownloadResourcesLegacyActivity.java @@ -95,6 +95,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity Factory.createDlinkBookmarkCatalogueProcessor(), Factory.createMapsmeBookmarkCatalogueProcessor(), Factory.createDlinkBookmarkGuidesPageProcessor(), + Factory.createDlinkBookmarksSubscriptionProcessor(), Factory.createOldCoreLinkAdapterProcessor(), Factory.createOpenCountryTaskProcessor(), Factory.createMapsmeProcessor(), diff --git a/android/src/com/mapswithme/maps/intent/Factory.java b/android/src/com/mapswithme/maps/intent/Factory.java index 75fd6e1af6..26fe56b759 100644 --- a/android/src/com/mapswithme/maps/intent/Factory.java +++ b/android/src/com/mapswithme/maps/intent/Factory.java @@ -10,6 +10,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; + import com.mapswithme.maps.DownloadResourcesLegacyActivity; import com.mapswithme.maps.Framework; import com.mapswithme.maps.MapFragment; @@ -29,6 +30,9 @@ import com.mapswithme.maps.bookmarks.data.FeatureId; import com.mapswithme.maps.bookmarks.data.MapObject; import com.mapswithme.maps.location.LocationHelper; import com.mapswithme.maps.onboarding.IntroductionScreenFactory; +import com.mapswithme.maps.purchase.BookmarksAllSubscriptionActivity; +import com.mapswithme.maps.purchase.BookmarksSightsSubscriptionActivity; +import com.mapswithme.maps.purchase.SubscriptionType; import com.mapswithme.maps.routing.RoutingController; import com.mapswithme.maps.search.SearchActivity; import com.mapswithme.maps.search.SearchEngine; @@ -96,6 +100,12 @@ public class Factory return new DlinkGuidesPageIntentProcessor(); } + @NonNull + public static IntentProcessor createDlinkBookmarksSubscriptionProcessor() + { + return new DlinkBookmarksSubscriptionIntentProcessor(); + } + @NonNull public static IntentProcessor createOldLeadUrlProcessor() { @@ -358,6 +368,32 @@ public class Factory } } + public static class DlinkBookmarksSubscriptionIntentProcessor extends DlinkIntentProcessor + { + static final String SUBSCRIPTION = "subscription"; + + @Override + boolean isLinkSupported(@NonNull Uri data) + { + return (File.separator + SUBSCRIPTION).equals(data.getPath()); + } + + @Nullable + @Override + MapTask createIntroductionTask(@NonNull String url) + { + // In release 9.5 the introduction screen for this deeplink is forgotten. + return null; + } + + @NonNull + @Override + MapTask createTargetTask(@NonNull String url) + { + return new BookmarksSubscriptionTask(url); + } + } + private static class MapsmeBookmarkCatalogueProcessor extends MapsmeProcessor { @NonNull @@ -682,6 +718,43 @@ public class Factory return value; } + public static class BookmarksSubscriptionTask implements MapTask + { + private static final long serialVersionUID = 8378582625122063605L; + @NonNull + private final String mUrl; + + BookmarksSubscriptionTask(@NonNull String url) + { + mUrl = url; + } + + @Override + public boolean run(@NonNull MwmActivity target) + { + Uri uri = Uri.parse(mUrl); + String serverId = uri.getQueryParameter("deliverable"); + if (TextUtils.isEmpty(serverId)) + return false; + + SubscriptionType type = SubscriptionType.getTypeByBookmarksGroup(serverId); + + if (type.equals(SubscriptionType.BOOKMARKS_ALL)) + { + BookmarksAllSubscriptionActivity.startForResult(target); + return true; + } + + if (type.equals(SubscriptionType.BOOKMARKS_SIGHTS)) + { + BookmarksSightsSubscriptionActivity.startForResult(target); + return true; + } + + return false; + } + } + public static class ImportBookmarkCatalogueTask implements MapTask { private static final long serialVersionUID = 5363722491377575159L;