Changed the criteria for requesting a Google Play Store evaluation.

* Now, it asks for an evaluation when the user has opened the application at least 20 times, has been using the application for the past two weeks, and has one or more ZIM files in their library.
This commit is contained in:
MohitMaliFtechiz 2024-08-05 23:12:25 +05:30
parent 5c1c359976
commit 6cbdf0a2af

View File

@ -23,18 +23,22 @@ import android.content.Intent
import android.net.Uri import android.net.Uri
import androidx.annotation.IdRes import androidx.annotation.IdRes
import org.kiwix.kiwixmobile.core.BuildConfig import org.kiwix.kiwixmobile.core.BuildConfig
import org.kiwix.kiwixmobile.core.compat.CompatHelper.Companion.getPackageInformation
import org.kiwix.kiwixmobile.core.dao.NewBookDao
import org.kiwix.kiwixmobile.core.di.ActivityScope import org.kiwix.kiwixmobile.core.di.ActivityScope
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.isCustomApp
import org.kiwix.kiwixmobile.core.utils.NetworkUtils import org.kiwix.kiwixmobile.core.utils.NetworkUtils
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
import javax.inject.Inject import javax.inject.Inject
const val VISITS_REQUIRED_TO_SHOW_RATE_DIALOG = 10 const val VISITS_REQUIRED_TO_SHOW_RATE_DIALOG = 20
@ActivityScope @ActivityScope
class RateDialogHandler @Inject constructor( class RateDialogHandler @Inject constructor(
private val activity: Activity, private val activity: Activity,
private val sharedPreferenceUtil: SharedPreferenceUtil, private val sharedPreferenceUtil: SharedPreferenceUtil,
private val alertDialogShower: AlertDialogShower private val alertDialogShower: AlertDialogShower,
private val newBookDao: NewBookDao
) { ) {
private var visitCounterPref: RateAppCounter? = null private var visitCounterPref: RateAppCounter? = null
private var tempVisitCount = 0 private var tempVisitCount = 0
@ -70,7 +74,25 @@ class RateDialogHandler @Inject constructor(
private fun shouldShowRateDialog(): Boolean { private fun shouldShowRateDialog(): Boolean {
return tempVisitCount >= VISITS_REQUIRED_TO_SHOW_RATE_DIALOG && return tempVisitCount >= VISITS_REQUIRED_TO_SHOW_RATE_DIALOG &&
visitCounterPref?.noThanksState == false && !BuildConfig.DEBUG visitCounterPref?.noThanksState == false && isTwoWeekPassed() &&
isZimFilesAvailableInLibrary() && !BuildConfig.DEBUG
}
private fun isZimFilesAvailableInLibrary(): Boolean {
// If it is a custom app, return true since custom apps always have the ZIM file.
if (activity.isCustomApp()) return true
// For Kiwix app, check if there are ZIM files available in the library.
return newBookDao.getBooks().isNotEmpty()
}
@Suppress("MagicNumber")
private fun isTwoWeekPassed(): Boolean {
val firstTimeInstallTime = activity.packageManager
.getPackageInformation(activity.packageName, 0).firstInstallTime
val timeDifference = System.currentTimeMillis() - firstTimeInstallTime
val twoWeeksInMillis = 14 * 24 * 60 * 60 * 1000L
// Check if the time difference is at least 2 weeks
return timeDifference >= twoWeeksInMillis
} }
private fun goToRateApp(activity: Activity) { private fun goToRateApp(activity: Activity) {