From 94feed33e0802f1a0dd1804c4eb32fb4e520ed0f Mon Sep 17 00:00:00 2001 From: Dmitry Yunitsky Date: Tue, 3 Feb 2015 15:53:23 +0300 Subject: [PATCH] Fix of rate dialogs display logic. --- .../maps/ads/GooglePlusDialogFragment.java | 16 ++++++++++++++-- .../com/mapswithme/maps/ads/LikesManager.java | 15 +++++++++++++-- .../maps/ads/RateStoreDialogFragment.java | 2 ++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/android/src/com/mapswithme/maps/ads/GooglePlusDialogFragment.java b/android/src/com/mapswithme/maps/ads/GooglePlusDialogFragment.java index f173ed41d8..64af5f768d 100644 --- a/android/src/com/mapswithme/maps/ads/GooglePlusDialogFragment.java +++ b/android/src/com/mapswithme/maps/ads/GooglePlusDialogFragment.java @@ -3,6 +3,7 @@ package com.mapswithme.maps.ads; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; +import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; @@ -21,9 +22,20 @@ public class GooglePlusDialogFragment extends DialogFragment { super.onResume(); - PlusOneButton plusButton = (PlusOneButton) getDialog().findViewById(R.id.btn__gplus); + final PlusOneButton plusButton = (PlusOneButton) getDialog().findViewById(R.id.btn__gplus); if (plusButton != null) - plusButton.initialize(Constants.Url.PLAY_MARKET_HTTPS_APP_PREFIX + Constants.Package.MWM_PRO_PACKAGE, 0); + { + plusButton.initialize(Constants.Url.PLAY_MARKET_HTTPS_APP_PREFIX + Constants.Package.MWM_PRO_PACKAGE, new PlusOneButton.OnPlusOneClickListener() + { + @Override + public void onPlusOneClick(Intent intent) + { + LikesManager.setRatingApplied(GooglePlusDialogFragment.class, true); + dismiss(); + startActivityForResult(intent, 0); + } + }); + } } @NonNull diff --git a/android/src/com/mapswithme/maps/ads/LikesManager.java b/android/src/com/mapswithme/maps/ads/LikesManager.java index a7b3e71cf3..bcaea36893 100644 --- a/android/src/com/mapswithme/maps/ads/LikesManager.java +++ b/android/src/com/mapswithme/maps/ads/LikesManager.java @@ -27,13 +27,14 @@ public class LikesManager private WeakReference mActivityRef; public static final String LAST_RATED_SESSION = "LastRatedSession"; + public static final String RATED_DIALOG = "RatedDialog"; public LikesManager(FragmentActivity activity) { mHandler = new Handler(activity.getMainLooper()); mActivityRef = new WeakReference<>(activity); - mIsNewUser = MWMApplication.get().getFirstInstallVersion() >= 430; + mIsNewUser = MWMApplication.get().getFirstInstallVersion() >= 422; mSessionNum = MWMApplication.get().getSessionsNumber(); } @@ -60,7 +61,7 @@ public class LikesManager private void displayLikeDialog(final Class dialogFragmentClass) { - if (isSessionRated()) + if (isSessionRated() || isRatingApplied(dialogFragmentClass)) return; setSessionRated(); @@ -105,4 +106,14 @@ public class LikesManager { MWMApplication.get().nativeSetInt(LAST_RATED_SESSION, mSessionNum); } + + public static boolean isRatingApplied(final Class dialogFragmentClass) + { + return MWMApplication.get().nativeGetBoolean(RATED_DIALOG + dialogFragmentClass.getSimpleName(), false); + } + + public static void setRatingApplied(final Class dialogFragmentClass, boolean applied) + { + MWMApplication.get().nativeSetBoolean(RATED_DIALOG + dialogFragmentClass.getSimpleName(), applied); + } } diff --git a/android/src/com/mapswithme/maps/ads/RateStoreDialogFragment.java b/android/src/com/mapswithme/maps/ads/RateStoreDialogFragment.java index 9d6bab4270..8dfc3c3281 100644 --- a/android/src/com/mapswithme/maps/ads/RateStoreDialogFragment.java +++ b/android/src/com/mapswithme/maps/ads/RateStoreDialogFragment.java @@ -61,6 +61,7 @@ public class RateStoreDialogFragment extends DialogFragment implements View.OnCl mRating = rating; if (rating == 5.0f) { + LikesManager.setRatingApplied(RateStoreDialogFragment.class, true); dismiss(); Utils.openAppInMarket(getActivity(), BuildConfig.REVIEW_URL); } @@ -103,6 +104,7 @@ public class RateStoreDialogFragment extends DialogFragment implements View.OnCl switch (v.getId()) { case R.id.btn__explain_bad_rating: + LikesManager.setRatingApplied(GooglePlusDialogFragment.class, true); dismiss(); final Intent intent = new Intent(Intent.ACTION_SENDTO); final PackageInfo info;