More fixes for update checker

This commit is contained in:
Mygod
2021-10-31 17:00:43 -04:00
parent 1f8fd4d853
commit 4e639e5c17
2 changed files with 33 additions and 20 deletions

View File

@@ -10,6 +10,7 @@ import com.google.android.play.core.install.model.InstallStatus
import com.google.android.play.core.ktx.AppUpdateResult
import com.google.android.play.core.ktx.requestUpdateFlow
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
import timber.log.Timber
@@ -44,23 +45,26 @@ object UpdateChecker {
private val manager by lazy { AppUpdateManagerFactory.create(app) }
fun check() = try {
manager.requestUpdateFlow().map { result ->
when (result) {
is AppUpdateResult.NotAvailable -> null
is AppUpdateResult.Available -> UpdateAvailable(result)
is AppUpdateResult.InProgress -> {
if (result.installState.installStatus() == InstallStatus.CANCELED) null else UpdateDownloading(result)
}
is AppUpdateResult.Downloaded -> UpdateDownloaded(result)
fun check() = manager.requestUpdateFlow().catch { e ->
when (e) {
is InstallException -> {
app.logEvent("InstallErrorCode") { param("errorCode", e.errorCode.toLong()) }
throw AppUpdate.IgnoredException(e)
}
is RuntimeException -> if (e.message == "Failed to bind to the service.") {
app.logEvent("UpdateBindFailure")
throw AppUpdate.IgnoredException(e)
}
}
} catch (e: InstallException) {
app.logEvent("InstallErrorCode") { param("errorCode", e.errorCode.toLong()) }
throw AppUpdate.IgnoredException(e)
} catch (e: RuntimeException) {
if (e.message != "Failed to bind to the service.") throw e
app.logEvent("UpdateBindFailure")
throw AppUpdate.IgnoredException(e)
throw e
}.map { result ->
when (result) {
is AppUpdateResult.NotAvailable -> null
is AppUpdateResult.Available -> UpdateAvailable(result)
is AppUpdateResult.InProgress -> {
if (result.installState.installStatus() == InstallStatus.CANCELED) null else UpdateDownloading(result)
}
is AppUpdateResult.Downloaded -> UpdateDownloaded(result)
}
}
}