From fe2c00cee03da2c8d8adea5e297e4165f806e89e Mon Sep 17 00:00:00 2001 From: Moritz Weber Date: Wed, 23 Mar 2022 19:50:54 +0100 Subject: [PATCH] small fixes (db and routes) --- lib/presentation/pages/playlists_page.dart | 11 ++++++++--- lib/presentation/pages/smart_lists_settings_page.dart | 8 ++++++-- lib/system/datasources/local_music_fetcher_impl.dart | 7 +++++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/presentation/pages/playlists_page.dart b/lib/presentation/pages/playlists_page.dart index 30b4c49..c04fdc9 100644 --- a/lib/presentation/pages/playlists_page.dart +++ b/lib/presentation/pages/playlists_page.dart @@ -9,6 +9,7 @@ import '../../domain/entities/playlist.dart'; import '../../domain/entities/smart_list.dart'; import '../state/audio_store.dart'; import '../state/music_data_store.dart'; +import '../state/navigation_store.dart'; import '../state/settings_store.dart'; import '../theming.dart'; import 'playlist_page.dart'; @@ -31,6 +32,7 @@ class _PlaylistsPageState extends State with AutomaticKeepAliveCl final AudioStore audioStore = GetIt.I(); final SettingsStore settingsStore = GetIt.I(); final MusicDataStore musicDataStore = GetIt.I(); + final NavigationStore navStore = GetIt.I(); super.build(context); return Observer(builder: (_) { @@ -49,7 +51,8 @@ class _PlaylistsPageState extends State with AutomaticKeepAliveCl final SmartList smartList = smartLists[index]; return ListTile( title: Text(smartList.name), - onTap: () => Navigator.of(context).push( + onTap: () => navStore.push( + context, MaterialPageRoute( builder: (BuildContext context) => SmartListPage(smartList: smartList), ), @@ -64,7 +67,8 @@ class _PlaylistsPageState extends State with AutomaticKeepAliveCl final Playlist playlist = playlists[i]; return ListTile( title: Text(playlist.name), - onTap: () => Navigator.of(context).push( + onTap: () => navStore.push( + context, MaterialPageRoute( builder: (BuildContext context) => PlaylistPage(playlist: playlist), ), @@ -104,7 +108,8 @@ class _PlaylistsPageState extends State with AutomaticKeepAliveCl backgroundColor: LIGHT2, foregroundColor: Colors.white, label: 'Add Smartlist', - onTap: () => Navigator.of(context).push( + onTap: () => navStore.push( + context, MaterialPageRoute( builder: (BuildContext context) => const SmartListFormPage(), ), diff --git a/lib/presentation/pages/smart_lists_settings_page.dart b/lib/presentation/pages/smart_lists_settings_page.dart index b7e09ff..0d1d64f 100644 --- a/lib/presentation/pages/smart_lists_settings_page.dart +++ b/lib/presentation/pages/smart_lists_settings_page.dart @@ -3,6 +3,7 @@ import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:get_it/get_it.dart'; import '../../domain/entities/smart_list.dart'; +import '../state/navigation_store.dart'; import '../state/settings_store.dart'; import '../theming.dart'; import 'smart_list_form_page.dart'; @@ -14,6 +15,7 @@ class SmartListsSettingsPage extends StatelessWidget { @override Widget build(BuildContext context) { final SettingsStore settingsStore = GetIt.I(); + final NavigationStore navStore = GetIt.I(); return SafeArea( child: Scaffold( @@ -29,7 +31,8 @@ class SmartListsSettingsPage extends StatelessWidget { actions: [ IconButton( icon: const Icon(Icons.add), - onPressed: () => Navigator.of(context).push( + onPressed: () => navStore.push( + context, MaterialPageRoute( builder: (BuildContext context) => const SmartListFormPage(), ), @@ -47,7 +50,8 @@ class SmartListsSettingsPage extends StatelessWidget { final SmartList smartList = smartLists[index]; return ListTile( title: Text(smartList.name), - onTap: () => Navigator.of(context).push( + onTap: () => navStore.push( + context, MaterialPageRoute( builder: (BuildContext context) => SmartListFormPage(smartList: smartList), ), diff --git a/lib/system/datasources/local_music_fetcher_impl.dart b/lib/system/datasources/local_music_fetcher_impl.dart index fd6ce70..f2e79f4 100644 --- a/lib/system/datasources/local_music_fetcher_impl.dart +++ b/lib/system/datasources/local_music_fetcher_impl.dart @@ -75,6 +75,13 @@ class LocalMusicFetcherImpl implements LocalMusicFetcher { albumIdMap[albumString] = album.id; if (album.albumArtPath != null) albumArtMap[albumString] = album.albumArtPath!; artistSet.add(album.artist); + } else { + // we already encountered the album (at least by albumString) + // make sure the id is consistent + if (album.id != albumIdMap[albumString]) { + songs.add(song.copyWith(albumId: albumIdMap[albumString])); + continue; + } } songs.add(song); continue;