From bf1aee04bbcd6302d0a39591b2384fbe14339e01 Mon Sep 17 00:00:00 2001 From: Jamy Bailly Date: Fri, 14 Nov 2025 09:29:19 +0100 Subject: [PATCH 1/4] feat: Use AppVersionChecker instead of legacy GithubTool on BugTracker --- Legacy/BugTracker/build.gradle | 2 ++ .../legacy/bugtracker/BugTrackerActivity.kt | 22 ++++++++++++--- .../legacy/bugtracker/BugTrackerViewModel.kt | 27 +++++++++++++++++++ .../res/navigation/bug_tracker_navigation.xml | 6 ++--- 4 files changed, 50 insertions(+), 7 deletions(-) diff --git a/Legacy/BugTracker/build.gradle b/Legacy/BugTracker/build.gradle index b0ab53986..5fda5957c 100644 --- a/Legacy/BugTracker/build.gradle +++ b/Legacy/BugTracker/build.gradle @@ -25,5 +25,7 @@ android { } dependencies { + implementation project(":Core:AppVersionChecker") implementation project(':Core:Legacy') + implementation project(":Core:Network") // To access API URL } diff --git a/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt b/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt index a7a812ef6..f8138af27 100644 --- a/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt +++ b/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt @@ -31,9 +31,12 @@ import androidx.core.view.WindowInsetsCompat import androidx.core.view.isGone import androidx.core.view.isVisible import androidx.core.widget.doOnTextChanged +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.flowWithLifecycle +import androidx.lifecycle.lifecycleScope import androidx.navigation.navArgs +import com.infomaniak.core.appversionchecker.data.models.AppVersion import com.infomaniak.core.legacy.bugtracker.databinding.ActivityBugTrackerBinding -import com.infomaniak.core.legacy.githubTools.GitHubViewModel import com.infomaniak.core.legacy.utils.FilePicker import com.infomaniak.core.legacy.utils.SnackbarUtils.showSnackbar import com.infomaniak.core.legacy.utils.getFileNameAndSize @@ -42,6 +45,7 @@ import com.infomaniak.core.legacy.utils.initProgress import com.infomaniak.core.legacy.utils.setMargins import com.infomaniak.core.legacy.utils.showProgressCatching import com.infomaniak.core.legacy.utils.showToast +import kotlinx.coroutines.launch import okhttp3.MultipartBody class BugTrackerActivity : AppCompatActivity() { @@ -52,7 +56,6 @@ class BugTrackerActivity : AppCompatActivity() { private val binding: ActivityBugTrackerBinding by lazy { ActivityBugTrackerBinding.inflate(layoutInflater) } private val bugTrackerViewModel: BugTrackerViewModel by viewModels() - private val gitHubViewModel: GitHubViewModel by viewModels() private val navigationArgs: BugTrackerActivityArgs by navArgs() private val fileAdapter = BugTrackerFileAdapter { updateFileTotalSize() } @@ -123,9 +126,20 @@ class BugTrackerActivity : AppCompatActivity() { } private fun ActivityBugTrackerBinding.checkLastAppVersion() { - gitHubViewModel.getLastRelease(navigationArgs.repoGitHub).observe(this@BugTrackerActivity) { lastRelease -> - appNotUpToDate.isGone = lastRelease?.name == navigationArgs.appBuildNumber + lifecycleScope.launch { + bugTrackerViewModel.mustRequireUpdate( + appId = navigationArgs.appId, + appVersion = navigationArgs.appBuildNumber, + store = AppVersion.Store.PLAY_STORE, + channelFilter = AppVersion.VersionChannel.Internal + ).flowWithLifecycle(lifecycle, Lifecycle.State.STARTED).collect { updateRequired -> + appNotUpToDate.isGone = !updateRequired + } } + + // gitHubViewModel.getLastRelease(navigationArgs.repoGitHub).observe(this@BugTrackerActivity) { lastRelease -> + // appNotUpToDate.isGone = lastRelease?.name == navigationArgs.appBuildNumber + // } } private fun ActivityBugTrackerBinding.observeBugReportResult() { diff --git a/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerViewModel.kt b/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerViewModel.kt index 6c94363d7..9f791a43d 100644 --- a/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerViewModel.kt +++ b/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerViewModel.kt @@ -19,6 +19,8 @@ package com.infomaniak.core.legacy.bugtracker import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import com.infomaniak.core.appversionchecker.data.api.ApiRepositoryStores +import com.infomaniak.core.appversionchecker.data.models.AppVersion import com.infomaniak.core.legacy.networking.HttpClient import com.infomaniak.core.legacy.networking.HttpUtils import com.infomaniak.core.legacy.networking.ManualAuthorizationRequired @@ -26,6 +28,8 @@ import com.infomaniak.core.legacy.utils.SingleLiveEvent import com.infomaniak.core.legacy.utils.await import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody @@ -67,6 +71,29 @@ class BugTrackerViewModel : ViewModel() { return isSuccessful } + fun mustRequireUpdate( + appId: String, + appVersion: String, + store: AppVersion.Store, + channelFilter: AppVersion.VersionChannel, + ): Flow = flow { + val projectionFields = listOf( + AppVersion.ProjectionFields.MinVersion, + AppVersion.ProjectionFields.PublishedVersionsTag, + AppVersion.ProjectionFields.PublishedVersionType + ) + + val apiResponse = ApiRepositoryStores.getAppVersion( + appName = appId, + store = store, + projectionFields = projectionFields, + channelFilter = channelFilter, + okHttpClient = HttpClient.okHttpClient + ) + + emit(apiResponse.data?.mustRequireUpdate(appVersion) ?: false) + } + private companion object { const val REPORT_URL = "https://welcome.infomaniak.com/api/web-components/1/report" } diff --git a/Legacy/BugTracker/src/main/res/navigation/bug_tracker_navigation.xml b/Legacy/BugTracker/src/main/res/navigation/bug_tracker_navigation.xml index 558a2e017..08f7c2199 100644 --- a/Legacy/BugTracker/src/main/res/navigation/bug_tracker_navigation.xml +++ b/Legacy/BugTracker/src/main/res/navigation/bug_tracker_navigation.xml @@ -39,6 +39,9 @@ android:name="userDisplayName" app:argType="string" app:nullable="true" /> + @@ -48,8 +51,5 @@ - From 5ca0f7a6fa3a8a13205d84b3b12f5ed1a6f7bc9f Mon Sep 17 00:00:00 2001 From: Jamy Bailly Date: Fri, 14 Nov 2025 09:39:53 +0100 Subject: [PATCH 2/4] fix: Remove old github code --- .../infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt b/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt index f8138af27..054cba407 100644 --- a/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt +++ b/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt @@ -136,10 +136,6 @@ class BugTrackerActivity : AppCompatActivity() { appNotUpToDate.isGone = !updateRequired } } - - // gitHubViewModel.getLastRelease(navigationArgs.repoGitHub).observe(this@BugTrackerActivity) { lastRelease -> - // appNotUpToDate.isGone = lastRelease?.name == navigationArgs.appBuildNumber - // } } private fun ActivityBugTrackerBinding.observeBugReportResult() { From 4cf3dffa777cf8fdd30cb20187a78ab18e735fd1 Mon Sep 17 00:00:00 2001 From: Jamy Bailly Date: Mon, 17 Nov 2025 17:18:59 +0100 Subject: [PATCH 3/4] fix: Merge with main --- .../core/legacy/bugtracker/BugTrackerViewModel.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerViewModel.kt b/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerViewModel.kt index 9f791a43d..f0f2b0b8a 100644 --- a/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerViewModel.kt +++ b/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerViewModel.kt @@ -19,7 +19,7 @@ package com.infomaniak.core.legacy.bugtracker import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.infomaniak.core.appversionchecker.data.api.ApiRepositoryStores +import com.infomaniak.core.appversionchecker.data.api.ApiRepositoryAppVersion import com.infomaniak.core.appversionchecker.data.models.AppVersion import com.infomaniak.core.legacy.networking.HttpClient import com.infomaniak.core.legacy.networking.HttpUtils @@ -83,12 +83,12 @@ class BugTrackerViewModel : ViewModel() { AppVersion.ProjectionFields.PublishedVersionType ) - val apiResponse = ApiRepositoryStores.getAppVersion( + val apiResponse = ApiRepositoryAppVersion.getAppVersion( appName = appId, store = store, projectionFields = projectionFields, channelFilter = channelFilter, - okHttpClient = HttpClient.okHttpClient + okHttpClient = HttpClient.okHttpClientNoTokenInterceptor ) emit(apiResponse.data?.mustRequireUpdate(appVersion) ?: false) From cbd05be025f06c88facf502de9646a19624bb28e Mon Sep 17 00:00:00 2001 From: Jamy Bailly Date: Tue, 18 Nov 2025 08:43:53 +0100 Subject: [PATCH 4/4] fix: Condition more readable --- .../com/infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt b/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt index 054cba407..70ec2d9a8 100644 --- a/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt +++ b/Legacy/BugTracker/src/main/java/com/infomaniak/core/legacy/bugtracker/BugTrackerActivity.kt @@ -133,7 +133,7 @@ class BugTrackerActivity : AppCompatActivity() { store = AppVersion.Store.PLAY_STORE, channelFilter = AppVersion.VersionChannel.Internal ).flowWithLifecycle(lifecycle, Lifecycle.State.STARTED).collect { updateRequired -> - appNotUpToDate.isGone = !updateRequired + appNotUpToDate.isVisible = updateRequired } } }