diff --git a/app/src/main/kotlin/org/fdroid/ui/apps/MyApps.kt b/app/src/main/kotlin/org/fdroid/ui/apps/MyApps.kt index 559164e1f..2770d3c3b 100644 --- a/app/src/main/kotlin/org/fdroid/ui/apps/MyApps.kt +++ b/app/src/main/kotlin/org/fdroid/ui/apps/MyApps.kt @@ -138,6 +138,7 @@ fun MyApps( } TopAppBarOverflowButton { onDismissRequest -> MyAppsOverFlowMenu( + onCheckForUpdates = myAppsInfo.actions::checkForUpdates, onInstallHistory = { onNav(NavigationKey.InstallationHistory) }, onExportInstalledApps = myAppsInfo.actions::exportInstalledApps, onDismissRequest = onDismissRequest, diff --git a/app/src/main/kotlin/org/fdroid/ui/apps/MyAppsInfo.kt b/app/src/main/kotlin/org/fdroid/ui/apps/MyAppsInfo.kt index 9e5fddefd..5b356ab42 100644 --- a/app/src/main/kotlin/org/fdroid/ui/apps/MyAppsInfo.kt +++ b/app/src/main/kotlin/org/fdroid/ui/apps/MyAppsInfo.kt @@ -44,5 +44,7 @@ interface MyAppsActions { fun onNotWarnWhenMetered() + fun checkForUpdates() + fun exportInstalledApps() } diff --git a/app/src/main/kotlin/org/fdroid/ui/apps/MyAppsOverflowMenu.kt b/app/src/main/kotlin/org/fdroid/ui/apps/MyAppsOverflowMenu.kt index 616765dc4..d22154427 100644 --- a/app/src/main/kotlin/org/fdroid/ui/apps/MyAppsOverflowMenu.kt +++ b/app/src/main/kotlin/org/fdroid/ui/apps/MyAppsOverflowMenu.kt @@ -2,6 +2,7 @@ package org.fdroid.ui.apps import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.History +import androidx.compose.material.icons.filled.Refresh import androidx.compose.material.icons.filled.UploadFile import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi @@ -17,10 +18,25 @@ import org.fdroid.R @OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun MyAppsOverFlowMenu( + onCheckForUpdates: () -> Unit, onInstallHistory: () -> Unit, onExportInstalledApps: () -> Unit, onDismissRequest: () -> Unit, ) { + DropdownMenuItem( + text = { Text(stringResource(R.string.pref_repo_updates_title)) }, + onClick = { + onCheckForUpdates() + onDismissRequest() + }, + leadingIcon = { + Icon( + imageVector = Icons.Default.Refresh, + contentDescription = null, + modifier = Modifier.semantics { hideFromAccessibility() }, + ) + }, + ) DropdownMenuItem( text = { Text(stringResource(R.string.install_history)) }, onClick = { diff --git a/app/src/main/kotlin/org/fdroid/ui/apps/MyAppsViewModel.kt b/app/src/main/kotlin/org/fdroid/ui/apps/MyAppsViewModel.kt index 4ce3ced17..260459472 100644 --- a/app/src/main/kotlin/org/fdroid/ui/apps/MyAppsViewModel.kt +++ b/app/src/main/kotlin/org/fdroid/ui/apps/MyAppsViewModel.kt @@ -38,6 +38,7 @@ import org.fdroid.install.AppInstallManager import org.fdroid.install.InstallConfirmationState import org.fdroid.install.InstallState import org.fdroid.install.InstalledAppsCache +import org.fdroid.repo.RepoUpdateWorker import org.fdroid.settings.OnboardingManager import org.fdroid.settings.SettingsManager import org.fdroid.ui.utils.startActivitySafe @@ -154,6 +155,10 @@ constructor( settingsManager.onDontWarnOnMeteredNetwork() } + override fun checkForUpdates() { + RepoUpdateWorker.updateNow(application) + } + override fun exportInstalledApps() { scope.launch { val stringBuilder = diff --git a/app/src/main/kotlin/org/fdroid/ui/utils/PreviewUtils.kt b/app/src/main/kotlin/org/fdroid/ui/utils/PreviewUtils.kt index 12623b5e0..03494de1a 100644 --- a/app/src/main/kotlin/org/fdroid/ui/utils/PreviewUtils.kt +++ b/app/src/main/kotlin/org/fdroid/ui/utils/PreviewUtils.kt @@ -425,6 +425,8 @@ fun getMyAppsInfo(model: MyAppsModel): MyAppsInfo = override fun onNotWarnWhenMetered() {} + override fun checkForUpdates() {} + override fun exportInstalledApps() {} } }