forked from organicmaps/organicmaps
[android] Added paid bookmark deeplink handling
This commit is contained in:
parent
0b3644d491
commit
a2835ee870
7 changed files with 108 additions and 51 deletions
|
@ -43,7 +43,6 @@ import com.mapswithme.maps.base.BaseMwmFragmentActivity;
|
|||
import com.mapswithme.maps.base.OnBackPressListener;
|
||||
import com.mapswithme.maps.bookmarks.BookmarkCategoriesActivity;
|
||||
import com.mapswithme.maps.bookmarks.BookmarksCatalogActivity;
|
||||
import com.mapswithme.maps.bookmarks.BookmarksDownloadManager;
|
||||
import com.mapswithme.maps.bookmarks.BookmarksPageFactory;
|
||||
import com.mapswithme.maps.bookmarks.data.BookmarkCategory;
|
||||
import com.mapswithme.maps.bookmarks.data.BookmarkManager;
|
||||
|
@ -131,7 +130,6 @@ import com.mapswithme.util.statistics.PlacePageTracker;
|
|||
import com.mapswithme.util.statistics.Statistics;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.net.MalformedURLException;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Stack;
|
||||
|
@ -1707,16 +1705,8 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||
@Override
|
||||
public boolean run(@NonNull MwmActivity target)
|
||||
{
|
||||
try
|
||||
{
|
||||
BookmarksDownloadManager.from(target).enqueueRequest(mUrl);
|
||||
BookmarkCategoriesActivity.startForResult(target, BookmarksPageFactory.DOWNLOADED.ordinal());
|
||||
}
|
||||
catch (MalformedURLException e)
|
||||
{
|
||||
LOGGER.e(TAG,"Failed to download catalogue by '" + mUrl + "'", e);
|
||||
}
|
||||
return false;
|
||||
BookmarkCategoriesActivity.startForResult(target, BookmarksPageFactory.DOWNLOADED.ordinal(), mUrl);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.content.Intent;
|
|||
import android.os.Bundle;
|
||||
import android.support.annotation.CallSuper;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.StyleRes;
|
||||
import android.support.v4.app.Fragment;
|
||||
|
||||
|
@ -19,7 +20,7 @@ public class BookmarkCategoriesActivity extends BaseToolbarActivity
|
|||
{
|
||||
public static final int REQ_CODE_DOWNLOAD_BOOKMARK_CATEGORY = 102;
|
||||
|
||||
public static void start(@NonNull Context context, int initialPage)
|
||||
public static void start(@NonNull Context context)
|
||||
{
|
||||
context.startActivity(new Intent(context, BookmarkCategoriesActivity.class));
|
||||
}
|
||||
|
@ -65,10 +66,12 @@ public class BookmarkCategoriesActivity extends BaseToolbarActivity
|
|||
return R.layout.bookmarks_activity;
|
||||
}
|
||||
|
||||
public static void startForResult(@NonNull Activity context, int initialPage)
|
||||
public static void startForResult(@NonNull Activity context, int initialPage,
|
||||
@Nullable String catalogDeeplink)
|
||||
{
|
||||
Bundle args = new Bundle();
|
||||
args.putInt(BookmarkCategoriesPagerFragment.ARG_CATEGORIES_PAGE, initialPage);
|
||||
args.putString(BookmarkCategoriesPagerFragment.ARG_CATALOG_DEEPLINK, catalogDeeplink);
|
||||
Intent intent = new Intent(context, BookmarkCategoriesActivity.class);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP).putExtras(args);
|
||||
context.startActivityForResult(intent, REQ_CODE_DOWNLOAD_BOOKMARK_CATEGORY);
|
||||
|
@ -77,6 +80,6 @@ public class BookmarkCategoriesActivity extends BaseToolbarActivity
|
|||
public static void startForResult(@NonNull Activity context)
|
||||
{
|
||||
int initialPage = SharedPropertiesUtils.getLastVisibleBookmarkCategoriesPage(context);
|
||||
startForResult(context, initialPage);
|
||||
startForResult(context, initialPage, null);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,16 +1,21 @@
|
|||
package com.mapswithme.maps.bookmarks;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.mapswithme.maps.R;
|
||||
import com.mapswithme.maps.auth.Authorizer;
|
||||
import com.mapswithme.maps.auth.TargetFragmentCallback;
|
||||
import com.mapswithme.maps.base.BaseMwmFragment;
|
||||
import com.mapswithme.util.SharedPropertiesUtils;
|
||||
import com.mapswithme.util.statistics.Statistics;
|
||||
|
@ -19,17 +24,47 @@ import java.util.Arrays;
|
|||
import java.util.List;
|
||||
|
||||
public class BookmarkCategoriesPagerFragment extends BaseMwmFragment
|
||||
implements TargetFragmentCallback
|
||||
{
|
||||
final static String ARG_CATEGORIES_PAGE = "arg_categories_page";
|
||||
final static String ARG_CATALOG_DEEPLINK = "arg_catalog_deeplink";
|
||||
|
||||
@SuppressWarnings("NullableProblems")
|
||||
@NonNull
|
||||
private BookmarksPagerAdapter mAdapter;
|
||||
@SuppressWarnings("NullableProblems")
|
||||
@NonNull
|
||||
private BookmarkDownloadController mController;
|
||||
@SuppressWarnings("NullableProblems")
|
||||
@NonNull
|
||||
private Authorizer mAuthorizer;
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
mAuthorizer = new Authorizer(this);
|
||||
mController = new DefaultBookmarkDownloadController(mAuthorizer,
|
||||
new CatalogListenerDecorator(this));
|
||||
if (savedInstanceState != null)
|
||||
mController.onRestore(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data)
|
||||
{
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (resultCode == Activity.RESULT_OK && requestCode == DefaultBookmarkDownloadController.REQ_CODE_PAY_BOOKMARK)
|
||||
{
|
||||
mController.retryDownloadBookmark();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState)
|
||||
{
|
||||
super.onSaveInstanceState(outState);
|
||||
mController.onSave(outState);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
@ -37,6 +72,7 @@ public class BookmarkCategoriesPagerFragment extends BaseMwmFragment
|
|||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
mController.attach(this);
|
||||
View root = inflater.inflate(R.layout.fragment_bookmark_categories_pager, container, false);
|
||||
ViewPager viewPager = root.findViewById(R.id.viewpager);
|
||||
TabLayout tabLayout = root.findViewById(R.id.sliding_tabs_layout);
|
||||
|
@ -52,6 +88,28 @@ public class BookmarkCategoriesPagerFragment extends BaseMwmFragment
|
|||
return root;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
Bundle args = getArguments();
|
||||
if (args == null)
|
||||
return;
|
||||
|
||||
String deeplink = args.getString(ARG_CATALOG_DEEPLINK);
|
||||
if (TextUtils.isEmpty(deeplink))
|
||||
return;
|
||||
|
||||
mController.downloadBookmark(deeplink);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView()
|
||||
{
|
||||
mController.detach();
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
private int saveAndGetInitialPage()
|
||||
{
|
||||
Bundle args = getArguments();
|
||||
|
@ -71,6 +129,18 @@ public class BookmarkCategoriesPagerFragment extends BaseMwmFragment
|
|||
return Arrays.asList(BookmarksPageFactory.values());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTargetFragmentResult(int resultCode, @Nullable Intent data)
|
||||
{
|
||||
mAuthorizer.onTargetFragmentResult(resultCode, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTargetAdded()
|
||||
{
|
||||
return isAdded();
|
||||
}
|
||||
|
||||
private class PageChangeListener extends ViewPager.SimpleOnPageChangeListener
|
||||
{
|
||||
@Override
|
||||
|
|
|
@ -7,10 +7,8 @@ import android.support.v4.app.Fragment;
|
|||
import com.mapswithme.maps.base.Detachable;
|
||||
import com.mapswithme.maps.base.Savable;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
|
||||
public interface BookmarkDownloadController extends Detachable<Fragment>, Savable<Bundle>
|
||||
{
|
||||
void downloadBookmark(@NonNull String url) throws MalformedURLException;
|
||||
void retryDownloadBookmark() throws MalformedURLException;
|
||||
boolean downloadBookmark(@NonNull String url);
|
||||
void retryDownloadBookmark();
|
||||
}
|
||||
|
|
|
@ -38,15 +38,11 @@ import com.mapswithme.util.log.LoggerFactory;
|
|||
import com.mapswithme.util.statistics.Statistics;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.net.MalformedURLException;
|
||||
|
||||
public class BookmarksCatalogFragment extends BaseWebViewMwmFragment
|
||||
implements TargetFragmentCallback
|
||||
{
|
||||
public static final String EXTRA_BOOKMARKS_CATALOG_URL = "bookmarks_catalog_url";
|
||||
static final int REQ_CODE_PAY_BOOKMARK = 1;
|
||||
private static final Logger LOGGER = LoggerFactory.INSTANCE.getLogger(LoggerFactory.Type.MISC);
|
||||
private static final String TAG = BookmarksCatalogFragment.class.getSimpleName();
|
||||
private static final String FAILED_PURCHASE_DIALOG_TAG = "failed_purchase_dialog_tag";
|
||||
|
||||
@SuppressWarnings("NullableProblems")
|
||||
|
@ -171,28 +167,12 @@ public class BookmarksCatalogFragment extends BaseWebViewMwmFragment
|
|||
|
||||
private boolean downloadBookmark(@NonNull String url)
|
||||
{
|
||||
try
|
||||
{
|
||||
mController.downloadBookmark(url);
|
||||
return true;
|
||||
}
|
||||
catch (MalformedURLException e)
|
||||
{
|
||||
LOGGER.e(TAG, "Failed to download bookmark, url: " + url);
|
||||
return false;
|
||||
}
|
||||
return mController.downloadBookmark(url);
|
||||
}
|
||||
|
||||
private void retryBookmarkDownload()
|
||||
{
|
||||
try
|
||||
{
|
||||
mController.retryDownloadBookmark();
|
||||
}
|
||||
catch (MalformedURLException e)
|
||||
{
|
||||
LOGGER.e(TAG, "Failed to retry bookmark downloading");
|
||||
}
|
||||
mController.retryDownloadBookmark();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -211,7 +191,7 @@ public class BookmarksCatalogFragment extends BaseWebViewMwmFragment
|
|||
public void onActivityResult(int requestCode, int resultCode, Intent data)
|
||||
{
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (resultCode == Activity.RESULT_OK && requestCode == REQ_CODE_PAY_BOOKMARK)
|
||||
if (resultCode == Activity.RESULT_OK && requestCode == DefaultBookmarkDownloadController.REQ_CODE_PAY_BOOKMARK)
|
||||
{
|
||||
retryBookmarkDownload();
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ import java.net.MalformedURLException;
|
|||
class DefaultBookmarkDownloadController implements BookmarkDownloadController,
|
||||
BookmarkDownloadHandler, Authorizer.Callback
|
||||
{
|
||||
static final int REQ_CODE_PAY_BOOKMARK = 1;
|
||||
private static final Logger LOGGER = LoggerFactory.INSTANCE.getLogger(LoggerFactory.Type.MISC);
|
||||
private static final String TAG = DefaultBookmarkDownloadController.class.getSimpleName();
|
||||
private static final String EXTRA_DOWNLOAD_URL = "extra_download_url";
|
||||
|
@ -51,18 +52,35 @@ class DefaultBookmarkDownloadController implements BookmarkDownloadController,
|
|||
}
|
||||
|
||||
@Override
|
||||
public void downloadBookmark(@NonNull String url) throws MalformedURLException
|
||||
public boolean downloadBookmark(@NonNull String url)
|
||||
{
|
||||
downloadBookmarkInternal(mApplication, url);
|
||||
mDownloadUrl = url;
|
||||
try
|
||||
{
|
||||
downloadBookmarkInternal(mApplication, url);
|
||||
mDownloadUrl = url;
|
||||
return true;
|
||||
}
|
||||
catch (MalformedURLException e)
|
||||
{
|
||||
LOGGER.e(TAG, "Failed to download bookmark, url: " + url, e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void retryDownloadBookmark() throws MalformedURLException
|
||||
public void retryDownloadBookmark()
|
||||
{
|
||||
if (mDownloadUrl == null)
|
||||
throw new IllegalStateException("Download url must be non-null at this point");
|
||||
downloadBookmarkInternal(mApplication, mDownloadUrl);
|
||||
|
||||
try
|
||||
{
|
||||
downloadBookmarkInternal(mApplication, mDownloadUrl);
|
||||
}
|
||||
catch (MalformedURLException e)
|
||||
{
|
||||
LOGGER.e(TAG, "Failed to retry bookmark downloading, url: " + mDownloadUrl, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -127,8 +145,7 @@ class DefaultBookmarkDownloadController implements BookmarkDownloadController,
|
|||
throw new IllegalStateException("Download url must be non-null if payment required!");
|
||||
|
||||
PaymentData data = parsePaymentData(mDownloadUrl);
|
||||
BookmarkPaymentActivity.startForResult(getFragmentOrThrow(), data,
|
||||
BookmarksCatalogFragment.REQ_CODE_PAY_BOOKMARK);
|
||||
BookmarkPaymentActivity.startForResult(getFragmentOrThrow(), data, REQ_CODE_PAY_BOOKMARK);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
|
|
@ -18,7 +18,6 @@ import com.mapswithme.maps.Framework;
|
|||
import com.mapswithme.maps.MwmActivity;
|
||||
import com.mapswithme.maps.R;
|
||||
import com.mapswithme.maps.bookmarks.BookmarkCategoriesActivity;
|
||||
import com.mapswithme.maps.bookmarks.BookmarksPageFactory;
|
||||
import com.mapswithme.maps.bookmarks.data.DistanceAndAzimut;
|
||||
import com.mapswithme.maps.location.LocationHelper;
|
||||
import com.mapswithme.maps.maplayer.traffic.TrafficManager;
|
||||
|
@ -424,7 +423,7 @@ public class NavigationController implements TrafficManager.TrafficCallback, Vie
|
|||
switch (v.getId())
|
||||
{
|
||||
case R.id.btn_bookmarks:
|
||||
BookmarkCategoriesActivity.start(mFrame.getContext(), BookmarksPageFactory.PRIVATE.ordinal());
|
||||
BookmarkCategoriesActivity.start(mFrame.getContext());
|
||||
Statistics.INSTANCE.trackRoutingEvent(ROUTING_BOOKMARKS_CLICK,
|
||||
RoutingController.get().isPlanning());
|
||||
break;
|
||||
|
|
Loading…
Add table
Reference in a new issue