Fix of rate dialogs display logic.

This commit is contained in:
Dmitry Yunitsky 2015-02-03 15:53:23 +03:00 committed by Alex Zolotarev
parent 35b6cf169d
commit 94feed33e0
3 changed files with 29 additions and 4 deletions

View file

@ -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

View file

@ -27,13 +27,14 @@ public class LikesManager
private WeakReference<FragmentActivity> 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<? extends DialogFragment> 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<? extends DialogFragment> dialogFragmentClass)
{
return MWMApplication.get().nativeGetBoolean(RATED_DIALOG + dialogFragmentClass.getSimpleName(), false);
}
public static void setRatingApplied(final Class<? extends DialogFragment> dialogFragmentClass, boolean applied)
{
MWMApplication.get().nativeSetBoolean(RATED_DIALOG + dialogFragmentClass.getSimpleName(), applied);
}
}

View file

@ -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;