Skip to content

Commit 9de1cbf

Browse files
committed
refactor(InAppUpdate): Use StoresLocalSettings and clean useless code
1 parent 9969181 commit 9de1cbf

File tree

7 files changed

+19
-30
lines changed

7 files changed

+19
-30
lines changed

app/src/main/java/com/infomaniak/mail/data/LocalSettings.kt

-9
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import com.infomaniak.lib.core.utils.SentryLog
2727
import com.infomaniak.lib.core.utils.SharedValues
2828
import com.infomaniak.lib.core.utils.sharedValue
2929
import com.infomaniak.lib.core.utils.transaction
30-
import com.infomaniak.lib.stores.StoreUtils.APP_UPDATE_TAG
3130
import com.infomaniak.mail.MatomoMail.ACTION_ARCHIVE_NAME
3231
import com.infomaniak.mail.MatomoMail.ACTION_DELETE_NAME
3332
import com.infomaniak.mail.MatomoMail.ACTION_FAVORITE_NAME
@@ -49,8 +48,6 @@ class LocalSettings private constructor(context: Context) : SharedValues {
4948
var askEmailAcknowledgement by sharedValue("askEmailAcknowledgmentKey", false)
5049
var hasAlreadyEnabledNotifications by sharedValue("hasAlreadyEnabledNotificationsKey", false)
5150
var isAppLocked by sharedValue("isAppLockedKey", false)
52-
var isUserWantingUpdates by sharedValue("isUserWantingUpdatesKey", true)
53-
var hasAppUpdateDownloaded by sharedValue("hasAppUpdateDownloaded", false)
5451
var aiEngine by sharedValue("aiEngineKey", AiEngine.FALCON)
5552
var threadDensity by sharedValue("threadDensityKey", ThreadDensity.LARGE)
5653
var theme by sharedValue("themeKey", if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) Theme.LIGHT else Theme.SYSTEM)
@@ -71,12 +68,6 @@ class LocalSettings private constructor(context: Context) : SharedValues {
7168

7269
fun removeSettings() = sharedPreferences.transaction { clear() }
7370

74-
fun resetUpdateSettings() {
75-
SentryLog.d(APP_UPDATE_TAG, "Reset update settings")
76-
isUserWantingUpdates = false // This avoid the user being instantly reprompted to download update
77-
hasAppUpdateDownloaded = false
78-
}
79-
8071
fun getSwipeAction(@StringRes nameRes: Int): SwipeAction = when (nameRes) {
8172
R.string.settingsSwipeRight -> swipeRight
8273
R.string.settingsSwipeLeft -> swipeLeft

app/src/main/java/com/infomaniak/mail/di/ApplicationModule.kt

+5
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import android.app.Application
2121
import android.content.Context
2222
import androidx.core.app.NotificationManagerCompat
2323
import androidx.work.WorkManager
24+
import com.infomaniak.lib.stores.StoresLocalSettings
2425
import com.infomaniak.mail.MainApplication
2526
import com.infomaniak.mail.data.LocalSettings
2627
import dagger.Module
@@ -61,4 +62,8 @@ object ApplicationModule {
6162
@Provides
6263
@Singleton
6364
fun providesLocalSettings(appContext: Context): LocalSettings = LocalSettings.getInstance(appContext)
65+
66+
@Provides
67+
@Singleton
68+
fun providesStoresLocalSettings(appContext: Context): StoresLocalSettings = StoresLocalSettings.getInstance(appContext)
6469
}

app/src/main/java/com/infomaniak/mail/ui/MainActivity.kt

-10
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import android.view.ViewGroup
2626
import android.webkit.WebView
2727
import androidx.activity.addCallback
2828
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
29-
import androidx.activity.result.contract.ActivityResultContracts.StartIntentSenderForResult
3029
import androidx.activity.viewModels
3130
import androidx.annotation.FloatRange
3231
import androidx.core.view.isVisible
@@ -48,13 +47,10 @@ import com.infomaniak.lib.stores.InAppUpdateManager
4847
import com.infomaniak.lib.stores.StoreUtils
4948
import com.infomaniak.lib.stores.StoreUtils.launchInAppReview
5049
import com.infomaniak.mail.BuildConfig
51-
import com.infomaniak.mail.MatomoMail.DISCOVER_LATER
52-
import com.infomaniak.mail.MatomoMail.DISCOVER_NOW
5350
import com.infomaniak.mail.MatomoMail.trackAppReviewEvent
5451
import com.infomaniak.mail.MatomoMail.trackDestination
5552
import com.infomaniak.mail.MatomoMail.trackEasterEggEvent
5653
import com.infomaniak.mail.MatomoMail.trackEvent
57-
import com.infomaniak.mail.MatomoMail.trackInAppUpdateEvent
5854
import com.infomaniak.mail.MatomoMail.trackMenuDrawerEvent
5955
import com.infomaniak.mail.R
6056
import com.infomaniak.mail.data.LocalSettings
@@ -123,12 +119,6 @@ class MainActivity : BaseActivity() {
123119
}
124120
}
125121

126-
private val inAppUpdateResultLauncher = registerForActivityResult(StartIntentSenderForResult()) { result ->
127-
val isUserWantingUpdates = result.resultCode == RESULT_OK
128-
localSettings.isUserWantingUpdates = isUserWantingUpdates
129-
trackInAppUpdateEvent(if (isUserWantingUpdates) DISCOVER_NOW else DISCOVER_LATER)
130-
}
131-
132122
private val currentFragment
133123
get() = supportFragmentManager
134124
.findFragmentById(R.id.mainHostFragment)

app/src/main/java/com/infomaniak/mail/ui/bottomSheetDialogs/UpdateAvailableBottomSheetDialog.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ import android.view.View
2222
import com.infomaniak.lib.core.utils.context
2323
import com.infomaniak.lib.core.utils.getAppName
2424
import com.infomaniak.lib.core.utils.goToPlayStore
25+
import com.infomaniak.lib.stores.StoresLocalSettings
2526
import com.infomaniak.mail.MatomoMail.DISCOVER_LATER
2627
import com.infomaniak.mail.MatomoMail.DISCOVER_NOW
2728
import com.infomaniak.mail.MatomoMail.trackAppUpdateEvent
2829
import com.infomaniak.mail.R
29-
import com.infomaniak.mail.data.LocalSettings
3030
import dagger.hilt.android.AndroidEntryPoint
3131
import javax.inject.Inject
3232
import com.infomaniak.lib.core.R as RCore
@@ -35,7 +35,7 @@ import com.infomaniak.lib.core.R as RCore
3535
class UpdateAvailableBottomSheetDialog : InformationBottomSheetDialog() {
3636

3737
@Inject
38-
lateinit var localSettings: LocalSettings
38+
lateinit var storesLocalSettings: StoresLocalSettings
3939

4040
override fun onViewCreated(view: View, savedInstanceState: Bundle?): Unit = with(binding) {
4141
super.onViewCreated(view, savedInstanceState)
@@ -48,15 +48,15 @@ class UpdateAvailableBottomSheetDialog : InformationBottomSheetDialog() {
4848
trackAppUpdateEvent(DISCOVER_NOW)
4949
setText(RCore.string.buttonUpdate)
5050
setOnClickListener {
51-
localSettings.isUserWantingUpdates = true
51+
storesLocalSettings.isUserWantingUpdates = true
5252
requireContext().goToPlayStore()
5353
dismiss()
5454
}
5555
}
5656

5757
secondaryActionButton.setOnClickListener {
5858
trackAppUpdateEvent(DISCOVER_LATER)
59-
localSettings.isUserWantingUpdates = false
59+
storesLocalSettings.isUserWantingUpdates = false
6060
dismiss()
6161
}
6262
}

app/src/main/java/com/infomaniak/mail/utils/LogoutUser.kt

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import androidx.work.WorkManager
2323
import com.infomaniak.lib.core.models.user.User
2424
import com.infomaniak.lib.core.networking.HttpClient
2525
import com.infomaniak.lib.core.utils.SentryLog
26+
import com.infomaniak.lib.stores.StoresLocalSettings
2627
import com.infomaniak.mail.data.LocalSettings
2728
import com.infomaniak.mail.data.cache.RealmDatabase
2829
import com.infomaniak.mail.data.cache.appSettings.AppSettingsController
@@ -41,6 +42,7 @@ class LogoutUser @Inject constructor(
4142
private val localSettings: LocalSettings,
4243
private val mailboxController: MailboxController,
4344
private val playServicesUtils: PlayServicesUtils,
45+
private val storesLocalSettings: StoresLocalSettings,
4446
@IoDispatcher private val ioDispatcher: CoroutineDispatcher,
4547
) {
4648

@@ -80,6 +82,7 @@ class LogoutUser @Inject constructor(
8082
private fun resetSettings() {
8183
AppSettingsController.removeAppSettings()
8284
localSettings.removeSettings()
85+
storesLocalSettings.removeSettings()
8386
with(WorkManager.getInstance(appContext)) {
8487
cancelAllWork()
8588
pruneWork()

app/src/main/java/com/infomaniak/mail/workers/AppUpdateWorker.kt

+6-6
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import androidx.work.WorkInfo.State
2525
import com.google.common.util.concurrent.ListenableFuture
2626
import com.infomaniak.lib.core.utils.SentryLog
2727
import com.infomaniak.lib.stores.StoreUtils
28-
import com.infomaniak.mail.data.LocalSettings
28+
import com.infomaniak.lib.stores.StoresLocalSettings
2929
import com.infomaniak.mail.di.IoDispatcher
3030
import com.infomaniak.mail.utils.PlayServicesUtils
3131
import dagger.assisted.Assisted
@@ -41,20 +41,20 @@ import javax.inject.Singleton
4141
class AppUpdateWorker @AssistedInject constructor(
4242
@Assisted appContext: Context,
4343
@Assisted params: WorkerParameters,
44-
private val localSettings: LocalSettings,
44+
private val storesLocalSettings: StoresLocalSettings,
4545
) : ListenableWorker(appContext, params) {
4646

4747
override fun startWork(): ListenableFuture<Result> {
4848
SentryLog.i(TAG, "Work started")
4949

5050
return CallbackToFutureAdapter.getFuture { completer ->
5151

52-
localSettings.hasAppUpdateDownloaded = false
52+
storesLocalSettings.hasAppUpdateDownloaded = false
5353
StoreUtils.installDownloadedUpdate(
5454
onSuccess = { completer.setResult(Result.success()) },
5555
onFailure = { exception ->
5656
Sentry.captureException(exception)
57-
localSettings.resetUpdateSettings()
57+
storesLocalSettings.resetUpdateSettings()
5858
completer.setResult(Result.failure())
5959
},
6060
)
@@ -70,12 +70,12 @@ class AppUpdateWorker @AssistedInject constructor(
7070
class Scheduler @Inject constructor(
7171
private val playServicesUtils: PlayServicesUtils,
7272
private val workManager: WorkManager,
73-
private val localSettings: LocalSettings,
73+
private val storesLocalSettings: StoresLocalSettings,
7474
@IoDispatcher private val ioDispatcher: CoroutineDispatcher,
7575
) {
7676

7777
suspend fun scheduleWorkIfNeeded() = withContext(ioDispatcher) {
78-
if (playServicesUtils.areGooglePlayServicesAvailable() && localSettings.hasAppUpdateDownloaded) {
78+
if (playServicesUtils.areGooglePlayServicesAvailable() && storesLocalSettings.hasAppUpdateDownloaded) {
7979
SentryLog.d(TAG, "Work scheduled")
8080

8181
val workRequest = OneTimeWorkRequestBuilder<AppUpdateWorker>()

0 commit comments

Comments
 (0)