diff --git a/Stores/src/main/java/com/infomaniak/lib/stores/BaseInAppUpdateManager.kt b/Stores/src/main/java/com/infomaniak/lib/stores/BaseInAppUpdateManager.kt index ed0ff154..a367c206 100644 --- a/Stores/src/main/java/com/infomaniak/lib/stores/BaseInAppUpdateManager.kt +++ b/Stores/src/main/java/com/infomaniak/lib/stores/BaseInAppUpdateManager.kt @@ -34,7 +34,7 @@ abstract class BaseInAppUpdateManager(activity: FragmentActivity) : DefaultLifec with(viewModel) { shouldCheckUpdate(::checkUpdateIsAvailable) - incrementAppUpdateLaunches() + decrementAppUpdateLaunches() } } diff --git a/Stores/src/main/java/com/infomaniak/lib/stores/StoresSettingsRepository.kt b/Stores/src/main/java/com/infomaniak/lib/stores/StoresSettingsRepository.kt index 0de1c242..0ea40577 100644 --- a/Stores/src/main/java/com/infomaniak/lib/stores/StoresSettingsRepository.kt +++ b/Stores/src/main/java/com/infomaniak/lib/stores/StoresSettingsRepository.kt @@ -84,6 +84,6 @@ class StoresSettingsRepository(private val context: Context) { private const val DEFAULT_IS_USER_WANTING_UPDATES = true private const val DEFAULT_HAS_APP_UPDATE_DOWNLOADED = false - private const val DEFAULT_APP_UPDATE_LAUNCHES = 0 + const val DEFAULT_APP_UPDATE_LAUNCHES = 20 } } diff --git a/Stores/src/main/java/com/infomaniak/lib/stores/StoresViewModel.kt b/Stores/src/main/java/com/infomaniak/lib/stores/StoresViewModel.kt index fc8ce931..d34d8941 100644 --- a/Stores/src/main/java/com/infomaniak/lib/stores/StoresViewModel.kt +++ b/Stores/src/main/java/com/infomaniak/lib/stores/StoresViewModel.kt @@ -21,6 +21,8 @@ import android.app.Application import android.content.Context import androidx.datastore.preferences.core.Preferences import androidx.lifecycle.* +import com.infomaniak.lib.stores.StoresSettingsRepository.Companion.APP_UPDATE_LAUNCHES +import com.infomaniak.lib.stores.StoresSettingsRepository.Companion.DEFAULT_APP_UPDATE_LAUNCHES import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -43,14 +45,17 @@ class StoresViewModel(application: Application) : AndroidViewModel(application) fun resetUpdateSettings() = viewModelScope.launch(ioCoroutineContext) { storesSettingsRepository.resetUpdateSettings() } //region BaseInAppUpdateManager - fun incrementAppUpdateLaunches() = viewModelScope.launch(ioCoroutineContext) { - val appUpdateLaunches = storesSettingsRepository.getValue(StoresSettingsRepository.APP_UPDATE_LAUNCHES) - set(StoresSettingsRepository.APP_UPDATE_LAUNCHES, appUpdateLaunches + 1) + fun decrementAppUpdateLaunches() = viewModelScope.launch(ioCoroutineContext) { + val appUpdateLaunches = storesSettingsRepository.getValue(APP_UPDATE_LAUNCHES) + set(APP_UPDATE_LAUNCHES, appUpdateLaunches - 1) } fun shouldCheckUpdate(checkUpdateCallback: () -> Unit) = viewModelScope.launch(ioCoroutineContext) { with(storesSettingsRepository.getAll()) { - if (appUpdateLaunches != 0 && (isUserWantingUpdates || appUpdateLaunches % 10 == 0)) checkUpdateCallback() + if (isUserWantingUpdates || appUpdateLaunches <= 0) { + checkUpdateCallback() + storesSettingsRepository.setValue(APP_UPDATE_LAUNCHES, DEFAULT_APP_UPDATE_LAUNCHES) + } } } //endregion diff --git a/Stores/src/standard/java/com/infomaniak/lib/stores/updatemanagers/InAppUpdateManager.kt b/Stores/src/standard/java/com/infomaniak/lib/stores/updatemanagers/InAppUpdateManager.kt index 5ac8ef59..8ac71e5f 100644 --- a/Stores/src/standard/java/com/infomaniak/lib/stores/updatemanagers/InAppUpdateManager.kt +++ b/Stores/src/standard/java/com/infomaniak/lib/stores/updatemanagers/InAppUpdateManager.kt @@ -104,7 +104,10 @@ class InAppUpdateManager( } override fun installDownloadedUpdate() { - viewModel.set(StoresSettingsRepository.HAS_APP_UPDATE_DOWNLOADED, false) + with(viewModel) { + set(StoresSettingsRepository.HAS_APP_UPDATE_DOWNLOADED, false) + set(StoresSettingsRepository.APP_UPDATE_LAUNCHES, StoresSettingsRepository.DEFAULT_APP_UPDATE_LAUNCHES) + } onInstallStart() appUpdateManager.completeUpdate() .addOnSuccessListener { onInstallSuccess?.invoke() }