package com.fekracomputers.islamiclibrary.reminder; import android.content.Context; import android.support.v4.app.DialogFragment; import android.support.v7.app.AppCompatActivity; import com.fekracomputers.islamiclibrary.settings.AboutUtil; import java.util.Date; public final class AppRateController { private static final boolean IS_DEBUG = false; private final Context context; private int installDate = 5; private int launchTimes = 10; private int remindInterval = 30; public AppRateController(Context context) { this.context = context; } private static boolean isOverDate(long targetDate, int days) { return new Date().getTime() - targetDate >= days * 24 * 60 * 60 * 1000; } public void showRateDialogIfMeetsConditions(AppCompatActivity activity) { if (shouldChangeLogDialog()) { showChangeLogDialog(activity); } else if (IS_DEBUG || shouldShowRateDialog()) { showRateDialog(activity); } } public AppRateController setLaunchTimes(int launchTimes) { this.launchTimes = launchTimes; return this; } public AppRateController setInstallDays(int installDate) { this.installDate = installDate; return this; } public AppRateController setRemindInterval(int remindInterval) { this.remindInterval = remindInterval; return this; } public AppRateController clearAgreeShowDialog() { PreferenceHelper.setAgreeShowDialog(context, true); return this; } public AppRateController clearSettingsParam() { PreferenceHelper.setAgreeShowDialog(context, true); PreferenceHelper.clearSharedPreferences(context); return this; } public AppRateController setAgreeShowDialog(boolean clear, Context context) { PreferenceHelper.setAgreeShowDialog(context, clear); return this; } public AppRateController monitor() { if (PreferenceHelper.isFirstLaunch(context)) { PreferenceHelper.setInstallDate(context); } PreferenceHelper.incrementLaunchTimes(context); return this; } public void showRateDialog(AppCompatActivity activity) { if (!activity.isFinishing()) { DialogFragment DonationReminderDialogFragment = new DonationReminderDialogFragment(); DonationReminderDialogFragment.show(activity.getSupportFragmentManager(), "DonationReminderDialogFragment"); PreferenceHelper.resetLaunchTimes(activity); PreferenceHelper.reSetLastRemind(activity); } } public void showChangeLogDialog(AppCompatActivity activity) { if (!activity.isFinishing()) { DialogFragment donationReminderDialogFragment = new ChangeLogDialogFragment(); donationReminderDialogFragment.show(activity.getSupportFragmentManager(), "donationReminderDialogFragment"); PreferenceHelper.updateLastViewdChangeLog(activity); } } public boolean shouldChangeLogDialog() { //evaluate if we will show changelog return PreferenceHelper.isFirstLaunchAfterUpdate(context); } public boolean shouldShowRateDialog() { return PreferenceHelper .getIsAgreeShowDialog(context) && isOverLaunchTimes() && isOverInstallDate() && isOverRemindDate() && !AboutUtil.isPro(context); } private boolean isOverLaunchTimes() { return PreferenceHelper.getLaunchTimes(context) >= launchTimes; } private boolean isOverInstallDate() { return isOverDate(PreferenceHelper.getInstallDate(context), installDate); } private boolean isOverRemindDate() { return isOverDate(PreferenceHelper.getRemindInterval(context), remindInterval); } public DonationReminderDialogFragmentBaseClass.DonationReminderDialogFragmentListener getListener() { return new DonationReminderDialogFragmentBaseClass.DonationReminderDialogFragmentListener() { @Override public void onDonationReminderDialogFragmentRateClick() { AboutUtil.rateApp(context); } @Override public void onDonationReminderDialogFragmentDonateClick() { AboutUtil.pay(context); } @Override public void onDonationReminderDialogFragmentDontShowAgainClick() { PreferenceHelper.setAgreeShowDialog(context,false); } @Override public void onDonationReminderDialogFragmentBuyPaidVersion() { AboutUtil.buyPaidVersion(context); } }; } }