tangem-app-android-audited/app/src/google/java/com/tangem/tap/GoogleReviewManager.kt
2026-02-03 18:37:05 +05:00

50 lines
No EOL
1.7 KiB
Kotlin

package com.tangem.tap
import android.app.Activity
import com.google.android.gms.tasks.Task
import com.google.android.play.core.review.ReviewInfo
import com.google.android.play.core.review.ReviewManagerFactory
import com.tangem.core.navigation.review.ReviewManager
import timber.log.Timber
import com.google.android.play.core.review.ReviewManager as GReviewManager
/**
* Implementation of [ReviewManager] for Google Play Store.
*/
internal class GoogleReviewManager : ReviewManager {
override fun request(onDismissClick: () -> Unit) {
foregroundActivityObserver.withForegroundActivity { activity ->
val reviewManager = ReviewManagerFactory.create(activity)
val requestTask = reviewManager.requestReviewFlow()
requestTask
.addOnCompleteListener { task ->
handleOnCompleteRequestTask(
reviewManager = reviewManager,
activity = activity,
task = task,
onDismissClick = onDismissClick,
)
}
.addOnFailureListener(Timber::e)
}
}
private fun handleOnCompleteRequestTask(
reviewManager: GReviewManager,
activity: Activity,
task: Task<ReviewInfo>,
onDismissClick: () -> Unit,
) {
if (task.isSuccessful) {
val reviewFlow = reviewManager.launchReviewFlow(activity, task.result)
reviewFlow
.addOnCompleteListener { resultReviewTask ->
if (!resultReviewTask.isSuccessful) onDismissClick()
}
.addOnFailureListener(Timber::e)
} else {
Timber.e(task.exception)
}
}
}