Merge branch 'development' of https://github.cmd.navi-tech.in/medici/android-customer-app into bugfix/getloan-fragment-navigate
* 'development' of https://github.cmd.navi-tech.in/medici/android-customer-app: Fix In-App update
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user