Should request a review every new game.
All checks were successful
Build Android / build (push) Successful in 8m19s

This commit is contained in:
2023-08-31 22:33:54 +02:00
parent e5041c98e1
commit 0dfed73bca
4 changed files with 66 additions and 2 deletions

View File

@@ -0,0 +1,50 @@
package me.zobrist.tichucounter.domain
import android.content.Context
import androidx.preference.PreferenceManager
import com.google.android.play.core.review.ReviewManagerFactory
import com.google.android.play.core.review.testing.FakeReviewManager
import dagger.hilt.android.qualifiers.ApplicationContext
import java.time.Duration
import java.time.Period
import java.util.Date
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class ReviewService @Inject constructor(@ApplicationContext private val context: Context) {
private val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
private val THREE_MONTHS = 3 * 30 * 24 * 60 * 60 * 1000
private var lastReviewedDate: Date
get() = Date(sharedPreferences.getLong("lastReviewedDate", 0))
set(value) {
val editor = sharedPreferences.edit()
editor.putLong("lastReviewedDate", value.time)
editor.apply()
}
fun request() {
val diff = Date().time - lastReviewedDate.time
if(diff > 0)
{
lastReviewedDate = Date()
//val manager = FakeReviewManager(context)
val manager = ReviewManagerFactory.create(context)
val request = manager.requestReviewFlow()
request.addOnCompleteListener { task ->
if (task.isSuccessful) {
// We got the ReviewInfo object
val reviewInfo = task.result
} else {
}
}
}
}
}

View File

@@ -4,6 +4,7 @@ import android.content.Context
import androidx.core.os.LocaleListCompat
import androidx.preference.PreferenceManager
import dagger.hilt.android.qualifiers.ApplicationContext
import java.util.Date
import javax.inject.Inject
import javax.inject.Singleton
@@ -36,6 +37,9 @@ class SettingsAdapter @Inject constructor(@ApplicationContext private val contex
var keepScreenOn: KeepScreenOn
private set
var reviewDialogShownDate: Date
get() = Date(sharedPreferences.getLong("reviewDialogShownDate", 0))
set(value) = updatePreference("reviewDialogShownDate", value.time)
init {
language = try {
@@ -95,6 +99,12 @@ class SettingsAdapter @Inject constructor(@ApplicationContext private val contex
editor.apply()
}
private fun updatePreference(name: String?, value: Long) {
val editor = sharedPreferences.edit()
editor.putLong(name, value)
editor.apply()
}
private fun notifyListeners(language: Language) {
listenerList.forEach {
it.onLanguageChanged(language)

View File

@@ -9,12 +9,14 @@ import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import me.zobrist.tichucounter.data.entity.Round
import me.zobrist.tichucounter.domain.ReviewService
import me.zobrist.tichucounter.repository.GameRepository
import javax.inject.Inject
@HiltViewModel
class MainViewModel @Inject constructor(
private val gameRepository: GameRepository
private val gameRepository: GameRepository,
private val reviewService: ReviewService
) : ViewModel() {
@@ -75,5 +77,7 @@ class MainViewModel @Inject constructor(
redoRounds.clear()
gameRepository.newGame()
}
reviewService.request()
}
}