diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetItem.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetItem.kt index 383efef2..26674a43 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetItem.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetItem.kt @@ -144,7 +144,7 @@ fun WidgetItem( } is MusicWidget -> { - MusicWidget() + MusicWidget(widget) } is CalendarWidget -> { diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt index 9abe12bc..7b62fb06 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt @@ -35,7 +35,7 @@ import java.time.ZoneId fun CalendarWidget( widget: CalendarWidget, ) { - val viewModel: CalendarWidgetVM = viewModel() + val viewModel: CalendarWidgetVM = viewModel(key = "calendar-widget-${widget.id}") val context = LocalContext.current val lifecycleOwner = LocalLifecycleOwner.current diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/FavoritesWidget.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/FavoritesWidget.kt index 7143f8d4..6cea8347 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/FavoritesWidget.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/FavoritesWidget.kt @@ -22,7 +22,7 @@ import de.mm20.launcher2.widgets.FavoritesWidget @Composable fun FavoritesWidget(widget: FavoritesWidget) { - val viewModel: FavoritesWidgetVM = viewModel() + val viewModel: FavoritesWidgetVM = viewModel(key = "favorites-widget-${widget.id}") val favorites by remember { viewModel.favorites }.collectAsState(emptyList()) val pinnedTags by viewModel.pinnedTags.collectAsState(emptyList()) val selectedTag by viewModel.selectedTag.collectAsState(null) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/music/MusicWidget.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/music/MusicWidget.kt index bb4503d1..602e8b31 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/music/MusicWidget.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/music/MusicWidget.kt @@ -77,12 +77,13 @@ import de.mm20.launcher2.ui.launcher.transitions.HandleEnterHomeTransition import de.mm20.launcher2.ui.launcher.transitions.EnterHomeTransitionParams import de.mm20.launcher2.ui.locals.LocalCardStyle import de.mm20.launcher2.ui.locals.LocalWindowSize +import de.mm20.launcher2.widgets.MusicWidget import kotlin.math.min @Composable -fun MusicWidget() { +fun MusicWidget(widget: MusicWidget) { - val viewModel: MusicWidgetVM = viewModel() + val viewModel: MusicWidgetVM = viewModel(key = "music-widget-${widget.id}") val albumArt by viewModel.albumArt.collectAsStateWithLifecycle(null) val title by viewModel.title.collectAsStateWithLifecycle(null) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/weather/WeatherWidget.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/weather/WeatherWidget.kt index 131b8bf3..b2ce8e5c 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/weather/WeatherWidget.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/weather/WeatherWidget.kt @@ -70,7 +70,7 @@ import kotlin.math.roundToInt @Composable fun WeatherWidget(widget: WeatherWidget) { - val viewModel: WeatherWidgetVM = viewModel() + val viewModel: WeatherWidgetVM = viewModel(key = "weather-widget-${widget.id}") val context = LocalContext.current val lifecycleOwner = LocalLifecycleOwner.current diff --git a/services/widgets/src/main/java/de/mm20/launcher2/services/widgets/WidgetsService.kt b/services/widgets/src/main/java/de/mm20/launcher2/services/widgets/WidgetsService.kt index e02b8405..ba2f8ee3 100644 --- a/services/widgets/src/main/java/de/mm20/launcher2/services/widgets/WidgetsService.kt +++ b/services/widgets/src/main/java/de/mm20/launcher2/services/widgets/WidgetsService.kt @@ -13,6 +13,7 @@ import de.mm20.launcher2.widgets.Widget import de.mm20.launcher2.widgets.WidgetRepository import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.withContext import java.util.UUID @@ -34,15 +35,7 @@ class WidgetsService( } fun getAvailableBuiltInWidgets(): Flow> { - return widgetRepository.get().map { widgets -> - getBuiltInWidgets().filter { - it.type == FavoritesWidget.Type && !widgets.any { it is FavoritesWidget } || - it.type == WeatherWidget.Type && !widgets.any { it is WeatherWidget } || - it.type == MusicWidget.Type && !widgets.any { it is MusicWidget } || - it.type == CalendarWidget.Type && !widgets.any { it is CalendarWidget } - - } - } + return flowOf(getBuiltInWidgets()) } fun getBuiltInWidgets(): List {