From 457a924a51f2ab297d91f5484d5091c6aac3ecb5 Mon Sep 17 00:00:00 2001 From: leekleak <142348248+leekleak@users.noreply.github.com> Date: Sun, 27 Jul 2025 17:51:49 +0300 Subject: [PATCH] fix duplicate pins (#1566) --- .../launcher2/ui/launcher/sheets/EditFavoritesSheet.kt | 7 +++++-- data/appshortcuts/build.gradle.kts | 1 + .../mm20/launcher2/appshortcuts/AppShortcutRepository.kt | 7 +++++-- .../src/main/java/de/mm20/launcher2/appshortcuts/Module.kt | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/EditFavoritesSheet.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/EditFavoritesSheet.kt index 705b1783..c59b28be 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/EditFavoritesSheet.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/EditFavoritesSheet.kt @@ -119,10 +119,13 @@ fun EditFavoritesSheet( .align(Alignment.Center) ) } - } else if (createShortcutTarget != null) { - ShortcutPicker(viewModel, it) } else { ReorderFavoritesGrid(viewModel, it) + if (createShortcutTarget != null) { + BottomSheetDialog({viewModel.cancelPickShortcut()}) { + ShortcutPicker(viewModel, it) + } + } } } } diff --git a/data/appshortcuts/build.gradle.kts b/data/appshortcuts/build.gradle.kts index 1c2e6c3a..99d4665d 100644 --- a/data/appshortcuts/build.gradle.kts +++ b/data/appshortcuts/build.gradle.kts @@ -48,5 +48,6 @@ dependencies { implementation(project(":core:ktx")) implementation(project(":core:crashreporter")) implementation(project(":core:preferences")) + implementation(project(":core:profiles")) } \ No newline at end of file diff --git a/data/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/AppShortcutRepository.kt b/data/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/AppShortcutRepository.kt index 4dee8303..f5da3137 100644 --- a/data/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/AppShortcutRepository.kt +++ b/data/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/AppShortcutRepository.kt @@ -13,6 +13,7 @@ import de.mm20.launcher2.ktx.normalize import de.mm20.launcher2.permissions.PermissionGroup import de.mm20.launcher2.permissions.PermissionsManager import de.mm20.launcher2.preferences.search.ShortcutSearchSettings +import de.mm20.launcher2.profiles.ProfileManager import de.mm20.launcher2.search.AppShortcut import de.mm20.launcher2.search.ResultScore import de.mm20.launcher2.search.SearchableRepository @@ -27,6 +28,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map @@ -54,6 +56,7 @@ internal class AppShortcutRepositoryImpl( private val context: Context, private val permissionsManager: PermissionsManager, private val settings: ShortcutSearchSettings, + private val profileManager: ProfileManager, ) : AppShortcutRepository { private val scope = CoroutineScope(Dispatchers.Default + Job()) @@ -213,9 +216,9 @@ internal class AppShortcutRepositoryImpl( val launcherApps = context.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps if (!launcherApps.hasShortcutHostPermission()) return emptyList() val results = mutableListOf() - val profiles = launcherApps.profiles + val profiles = profileManager.activeProfiles.first() for (profile in profiles) { - val activities = launcherApps.getShortcutConfigActivityList(null, profile) + val activities = launcherApps.getShortcutConfigActivityList(null, profile.userHandle) results.addAll( activities.map { AppShortcutConfigActivity(it) diff --git a/data/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/Module.kt b/data/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/Module.kt index 67b7bead..49bd6dcf 100644 --- a/data/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/Module.kt +++ b/data/appshortcuts/src/main/java/de/mm20/launcher2/appshortcuts/Module.kt @@ -8,7 +8,7 @@ import org.koin.core.qualifier.named import org.koin.dsl.module val appShortcutsModule = module { - factory { AppShortcutRepositoryImpl(androidContext(), get(), get()) } + factory { AppShortcutRepositoryImpl(androidContext(), get(), get(), get()) } factory>(named()) { get() } factory(named(LauncherShortcut.Domain)) { LauncherShortcutDeserializer(androidContext()) } factory(named(LegacyShortcut.Domain)) { LegacyShortcutDeserializer(androidContext()) }