@@ -26,7 +26,6 @@ import android.view.ViewGroup
26
26
import android.webkit.WebView
27
27
import androidx.activity.addCallback
28
28
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
29
- import androidx.activity.result.contract.ActivityResultContracts.StartIntentSenderForResult
30
29
import androidx.activity.viewModels
31
30
import androidx.annotation.FloatRange
32
31
import androidx.core.view.isVisible
@@ -40,24 +39,18 @@ import androidx.navigation.fragment.NavHostFragment
40
39
import androidx.work.Data
41
40
import com.infomaniak.lib.core.MatomoCore.TrackerAction
42
41
import com.infomaniak.lib.core.networking.LiveDataNetworkStatus
43
- import com.infomaniak.lib.core.utils.SentryLog
42
+ import com.infomaniak.lib.core.utils.*
44
43
import com.infomaniak.lib.core.utils.Utils
45
44
import com.infomaniak.lib.core.utils.Utils.toEnumOrThrow
46
45
import com.infomaniak.lib.core.utils.UtilsUi.openUrl
47
- import com.infomaniak.lib.core.utils.hasPermissions
48
- import com.infomaniak.lib.core.utils.year
49
- import com.infomaniak.lib.stores.StoreUtils.checkUpdateIsAvailable
50
- import com.infomaniak.lib.stores.StoreUtils.initAppUpdateManager
46
+ import com.infomaniak.lib.stores.InAppUpdateManager
47
+ import com.infomaniak.lib.stores.StoreUtils
51
48
import com.infomaniak.lib.stores.StoreUtils.launchInAppReview
52
- import com.infomaniak.lib.stores.StoreUtils.unregisterAppUpdateListener
53
49
import com.infomaniak.mail.BuildConfig
54
- import com.infomaniak.mail.MatomoMail.DISCOVER_LATER
55
- import com.infomaniak.mail.MatomoMail.DISCOVER_NOW
56
50
import com.infomaniak.mail.MatomoMail.trackAppReviewEvent
57
51
import com.infomaniak.mail.MatomoMail.trackDestination
58
52
import com.infomaniak.mail.MatomoMail.trackEasterEggEvent
59
53
import com.infomaniak.mail.MatomoMail.trackEvent
60
- import com.infomaniak.mail.MatomoMail.trackInAppUpdateEvent
61
54
import com.infomaniak.mail.MatomoMail.trackMenuDrawerEvent
62
55
import com.infomaniak.mail.R
63
56
import com.infomaniak.mail.data.LocalSettings
@@ -127,12 +120,6 @@ class MainActivity : BaseActivity() {
127
120
}
128
121
}
129
122
130
- private val inAppUpdateResultLauncher = registerForActivityResult(StartIntentSenderForResult ()) { result ->
131
- val isUserWantingUpdates = result.resultCode == RESULT_OK
132
- localSettings.isUserWantingUpdates = isUserWantingUpdates
133
- trackInAppUpdateEvent(if (isUserWantingUpdates) DISCOVER_NOW else DISCOVER_LATER )
134
- }
135
-
136
123
private val currentFragment
137
124
get() = supportFragmentManager
138
125
.findFragmentById(R .id.mainHostFragment)
@@ -157,6 +144,9 @@ class MainActivity : BaseActivity() {
157
144
@Inject
158
145
lateinit var snackbarManager: SnackbarManager
159
146
147
+ @Inject
148
+ lateinit var inAppUpdateManager: InAppUpdateManager
149
+
160
150
private val drawerListener = object : DrawerLayout .DrawerListener {
161
151
162
152
var hasDragged = false
@@ -348,14 +338,12 @@ class MainActivity : BaseActivity() {
348
338
appReviewLaunches--
349
339
}
350
340
351
- showUpdateAvailable()
352
341
showSyncDiscovery()
353
342
}
354
343
355
344
override fun onResume () {
356
345
super .onResume()
357
346
playServicesUtils.checkPlayServices(this )
358
- mainViewModel.checkAppUpdateStatus()
359
347
if (binding.drawerLayout.isOpen) colorSystemBarsWithMenuDrawer(UiUtils .FULLY_SLID )
360
348
}
361
349
@@ -388,7 +376,6 @@ class MainActivity : BaseActivity() {
388
376
389
377
override fun onStop () {
390
378
descriptionDialog.resetLoadingAndDismiss()
391
- unregisterAppUpdateListener()
392
379
super .onStop()
393
380
}
394
381
@@ -467,27 +454,14 @@ class MainActivity : BaseActivity() {
467
454
}
468
455
}
469
456
470
- private fun initAppUpdateManager () {
471
- initAppUpdateManager(
472
- context = this ,
473
- onUpdateDownloaded = { mainViewModel.toggleAppUpdateStatus(isUpdateDownloaded = true ) },
474
- onUpdateInstalled = {
475
- Sentry .captureMessage(" InstallStateUpdateListener called ’state == INSTALLED’" , SentryLevel .DEBUG )
476
- mainViewModel.toggleAppUpdateStatus(isUpdateDownloaded = false )
477
- },
478
- )
479
- }
457
+ private fun initAppUpdateManager () = with (inAppUpdateManager) {
458
+ onFDroidResult = { updateIsAvailable ->
459
+ if (updateIsAvailable) navController.navigate(R .id.updateAvailableBottomSheetDialog)
460
+ }
480
461
481
- private fun showUpdateAvailable () = with (localSettings) {
482
- if (isUserWantingUpdates || (appLaunches != 0 && appLaunches % 10 == 0 )) {
483
- checkUpdateIsAvailable(
484
- appId = BuildConfig .APPLICATION_ID ,
485
- versionCode = BuildConfig .VERSION_CODE ,
486
- inAppResultLauncher = inAppUpdateResultLauncher,
487
- onFDroidResult = { updateIsAvailable ->
488
- if (updateIsAvailable) navController.navigate(R .id.updateAvailableBottomSheetDialog)
489
- },
490
- )
462
+ onInAppUpdateUiChange = { isUpdateDownloaded ->
463
+ SentryLog .d(StoreUtils .APP_UPDATE_TAG , " Must display update button : $isUpdateDownloaded " )
464
+ mainViewModel.canInstallUpdate.value = isUpdateDownloaded
491
465
}
492
466
}
493
467
0 commit comments