diff --git a/app/src/main/java/me/zobrist/tichucounter/domain/ReviewService.kt b/app/src/main/java/me/zobrist/tichucounter/domain/ReviewService.kt new file mode 100644 index 0000000..02e5a61 --- /dev/null +++ b/app/src/main/java/me/zobrist/tichucounter/domain/ReviewService.kt @@ -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 { + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/me/zobrist/tichucounter/domain/SettingsAdapter.kt b/app/src/main/java/me/zobrist/tichucounter/domain/SettingsAdapter.kt index 452e678..6f7e074 100644 --- a/app/src/main/java/me/zobrist/tichucounter/domain/SettingsAdapter.kt +++ b/app/src/main/java/me/zobrist/tichucounter/domain/SettingsAdapter.kt @@ -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) diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/MainViewModel.kt b/app/src/main/java/me/zobrist/tichucounter/ui/MainViewModel.kt index 5905bf0..9c1e282 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/MainViewModel.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/MainViewModel.kt @@ -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() } } \ No newline at end of file diff --git a/build.gradle b/build.gradle index dc84979..db38247 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:8.1.0' + classpath 'com.android.tools.build:gradle:8.1.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong