Merge pull request #3163 from medici/in-app-update-fix

Fix In-App update
This commit is contained in:
shankar yadav
2022-06-02 09:03:40 +05:30
committed by GitHub Enterprise
2 changed files with 43 additions and 14 deletions

View File

@@ -29,6 +29,7 @@ class InAppUpdate : LifecycleObserver {
private var appUpdateManager: AppUpdateManager
private var appUpdateInfoTask: Task<AppUpdateInfo>
private var appUpdateInfo: AppUpdateInfo? = null
private val naviAnalyticsInAppUpdate by lazy { NaviAnalytics.naviAnalytics.InAppUpdate() }
private val listenerForFlexibleUpdate by lazy {
InstallStateUpdatedListener { state ->
@@ -67,24 +68,39 @@ class InAppUpdate : LifecycleObserver {
naviAnalyticsInAppUpdate.onInAppSuccessFully()
}
fun appUpdateAvailable(): Boolean = try {
appUpdateInfoTask.result.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
} catch (ex: Exception) {
false
}
fun getAppUpdateInProgress() = try {
appUpdateInfoTask.result.installStatus() == InstallStatus.DOWNLOADING ||
appUpdateInfoTask.result.installStatus() == InstallStatus.INSTALLING ||
appUpdateInfoTask.result.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS
} catch (ex: Exception) {
false
}
fun getAppUpdateInProgress() =
appUpdateInfo?.installStatus() == InstallStatus.DOWNLOADING ||
appUpdateInfo?.installStatus() == InstallStatus.INSTALLING ||
appUpdateInfo?.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS
fun completeUpdate() {
appUpdateManager.completeUpdate()
}
fun checkForUpdate(
screenName: String,
updateApp: (
String,
Boolean, showDialog: ((
UpdateAppDetails,
startUpdatingApp: () -> Unit
) -> Unit)?
) -> Unit,
showDialog: ((
UpdateAppDetails,
startUpdatingApp: () -> Unit
) -> Unit)? = null
) {
appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->
this.appUpdateInfo = appUpdateInfo
updateApp.invoke(
screenName,
appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE,
showDialog
)
}
}
fun updateApp(
inAppUpdateResponse: InAppUpdateResponse,
showDialog: ((
@@ -123,6 +139,7 @@ class InAppUpdate : LifecycleObserver {
updateApp: (AppUpdateManager, AppUpdateInfo) -> Unit
) {
appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->
this.appUpdateInfo = appUpdateInfo
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE &&
appUpdateInfo.isUpdateTypeAllowed(appUpdateType)
) {
@@ -149,6 +166,7 @@ class InAppUpdate : LifecycleObserver {
private fun checkOnGoingAppUpdate() {
if (getAppUpdateInProgress()) {
getAppUpdateInfo().addOnSuccessListener { state ->
this.appUpdateInfo = state
if (state.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
if (state.installStatus() == InstallStatus.DOWNLOADED &&
::inAppUpdateListener.isInitialized

View File

@@ -640,7 +640,18 @@ abstract class BaseActivity : AppCompatActivity(), Toolbar.OnMenuItemClickListen
KYC -> {
}
}
if (inAppUpdate.appUpdateAvailable()) {
inAppUpdate.checkForUpdate(screenName, ::updateCallback, showDialog)
}
private fun updateCallback(
screenName: String,
isAppUpdateAvailable: Boolean,
showDialog: ((
UpdateAppDetails,
startUpdatingApp: () -> Unit
) -> Unit)? = null
) {
if (isAppUpdateAvailable) {
inAppUpdateVM.inAppUpdate.observeNonNull(this) { inAppUpdateResponse ->
inAppUpdate.updateApp(
inAppUpdateResponse = inAppUpdateResponse,