Skip to content

Commit 814b10b

Browse files
committed
Fix: 업데이트 가능 여부 확인 메서드에서 suspendCoroutine 대신 suspendCancellableCoroutine 사용, 업데이트 여부 판단 조건 수정
1 parent 0ae59c2 commit 814b10b

File tree

1 file changed

+12
-6
lines changed
  • presentation/src/main/java/com/threegap/bitnagil/presentation/common/playstore

1 file changed

+12
-6
lines changed

presentation/src/main/java/com/threegap/bitnagil/presentation/common/playstore/PlayStoreUtils.kt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ import com.google.android.play.core.install.model.UpdateAvailability
1919
import com.threegap.bitnagil.presentation.BuildConfig
2020
import kotlinx.coroutines.delay
2121
import kotlinx.coroutines.launch
22+
import kotlinx.coroutines.suspendCancellableCoroutine
2223
import kotlin.coroutines.resume
23-
import kotlin.coroutines.suspendCoroutine
2424
import kotlin.system.exitProcess
2525

2626
private const val PACKAGE_NAME = BuildConfig.APPLICATION_ID
@@ -95,19 +95,25 @@ fun updateAvailable(): UpdateAvailableState {
9595
return isUpdateAvailable
9696
}
9797

98-
private suspend fun Context.checkForUpdateAvailability(): UpdateAvailableState = suspendCoroutine { continuation ->
98+
private suspend fun Context.checkForUpdateAvailability(): UpdateAvailableState = suspendCancellableCoroutine { continuation ->
9999
val appUpdateManager = AppUpdateManagerFactory.create(this)
100100
val appUpdateInfoTask = appUpdateManager.appUpdateInfo
101101

102102
appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->
103-
val isAvailable = appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE &&
104-
appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)
103+
if (!continuation.isActive) return@addOnSuccessListener
105104

106-
val state = if (isAvailable) UpdateAvailableState.NEED_UPDATE else UpdateAvailableState.Latest
105+
val isAvailable = appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
106+
107+
val isAllowed = appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE) ||
108+
appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)
109+
110+
val state = if (isAvailable && isAllowed) UpdateAvailableState.NEED_UPDATE else UpdateAvailableState.Latest
107111
continuation.resume(state)
108112
}
109113

110114
appUpdateInfoTask.addOnFailureListener {
111-
continuation.resume(UpdateAvailableState.NONE)
115+
if (continuation.isActive) {
116+
continuation.resume(UpdateAvailableState.NONE)
117+
}
112118
}
113119
}

0 commit comments

Comments
 (0)