2020-04-06 22:33:26 +02:00
|
|
|
import 'package:meta/meta.dart';
|
2020-03-28 09:39:31 +01:00
|
|
|
import 'package:mobx/mobx.dart';
|
|
|
|
|
|
|
|
import '../../domain/entities/album.dart';
|
2020-08-08 19:02:03 +02:00
|
|
|
import '../../domain/entities/artist.dart';
|
2020-04-03 13:55:15 +02:00
|
|
|
import '../../domain/entities/song.dart';
|
2020-03-28 09:39:31 +01:00
|
|
|
import '../../domain/repositories/music_data_repository.dart';
|
2020-12-28 16:41:03 +01:00
|
|
|
import '../../domain/repositories/settings_repository.dart';
|
2020-03-28 09:39:31 +01:00
|
|
|
|
2020-04-07 21:25:01 +02:00
|
|
|
part 'music_data_store.g.dart';
|
2020-03-28 09:39:31 +01:00
|
|
|
|
2020-04-07 22:06:43 +02:00
|
|
|
class MusicDataStore extends _MusicDataStore with _$MusicDataStore {
|
2020-12-28 16:41:03 +01:00
|
|
|
MusicDataStore({
|
|
|
|
@required MusicDataRepository musicDataRepository,
|
|
|
|
@required SettingsRepository settingsRepository,
|
|
|
|
}) : super(musicDataRepository, settingsRepository);
|
2020-03-28 09:39:31 +01:00
|
|
|
}
|
|
|
|
|
2020-04-07 22:06:43 +02:00
|
|
|
abstract class _MusicDataStore with Store {
|
2020-12-28 16:41:03 +01:00
|
|
|
_MusicDataStore(this._musicDataRepository, this._settingsRepository) {
|
2020-11-15 16:36:50 +01:00
|
|
|
songStream = _musicDataRepository.songStream.asObservable(initialValue: []);
|
2020-12-30 18:28:16 +01:00
|
|
|
albumStream = _musicDataRepository.albumStream.asObservable(initialValue: []);
|
|
|
|
artistStream = _musicDataRepository.artistStream.asObservable(initialValue: []);
|
2020-11-15 16:36:50 +01:00
|
|
|
}
|
2020-03-28 09:39:31 +01:00
|
|
|
|
2020-04-16 08:04:34 +02:00
|
|
|
final MusicDataRepository _musicDataRepository;
|
2020-12-28 16:41:03 +01:00
|
|
|
final SettingsRepository _settingsRepository;
|
2020-04-10 20:12:26 +02:00
|
|
|
|
2020-11-15 16:36:50 +01:00
|
|
|
@observable
|
|
|
|
ObservableStream<List<Song>> songStream;
|
|
|
|
|
|
|
|
@observable
|
2020-12-30 18:28:16 +01:00
|
|
|
ObservableStream<List<Album>> albumStream;
|
2020-12-29 21:01:31 +01:00
|
|
|
|
2020-08-08 19:02:03 +02:00
|
|
|
@observable
|
2020-12-30 18:28:16 +01:00
|
|
|
ObservableStream<List<Artist>> artistStream;
|
2020-08-08 19:02:03 +02:00
|
|
|
|
2020-03-28 09:39:31 +01:00
|
|
|
@observable
|
2020-12-30 18:28:16 +01:00
|
|
|
ObservableStream<List<Song>> albumSongStream;
|
2020-03-28 09:39:31 +01:00
|
|
|
|
2020-04-03 13:55:15 +02:00
|
|
|
@observable
|
2020-12-30 18:28:16 +01:00
|
|
|
ObservableStream<List<Album>> artistAlbumStream;
|
2020-04-03 13:55:15 +02:00
|
|
|
|
2020-03-30 23:19:02 +02:00
|
|
|
@observable
|
|
|
|
bool isUpdatingDatabase = false;
|
|
|
|
|
2020-03-28 09:39:31 +01:00
|
|
|
@action
|
|
|
|
Future<void> updateDatabase() async {
|
2020-03-30 23:19:02 +02:00
|
|
|
isUpdatingDatabase = true;
|
2020-08-01 19:45:40 +02:00
|
|
|
await _musicDataRepository.updateDatabase();
|
2020-03-30 23:19:02 +02:00
|
|
|
isUpdatingDatabase = false;
|
2020-03-28 09:39:31 +01:00
|
|
|
}
|
|
|
|
|
2020-04-16 08:04:34 +02:00
|
|
|
|
|
|
|
@action
|
|
|
|
Future<void> fetchSongsFromAlbum(Album album) async {
|
2020-11-15 16:36:50 +01:00
|
|
|
albumSongStream = _musicDataRepository.getAlbumSongStream(album).asObservable(initialValue: []);
|
2020-04-16 08:04:34 +02:00
|
|
|
}
|
2020-09-19 17:08:48 +02:00
|
|
|
|
2020-12-29 21:01:31 +01:00
|
|
|
@action
|
|
|
|
Future<void> fetchAlbumsFromArtist(Artist artist) async {
|
2020-12-30 16:04:20 +01:00
|
|
|
artistAlbumStream =
|
|
|
|
_musicDataRepository.getArtistAlbumStream(artist).asObservable(initialValue: []);
|
2020-12-29 21:01:31 +01:00
|
|
|
}
|
|
|
|
|
2020-09-19 17:08:48 +02:00
|
|
|
Future<void> setSongBlocked(Song song, bool blocked) async {
|
|
|
|
await _musicDataRepository.setSongBlocked(song, blocked);
|
|
|
|
}
|
2020-10-18 12:18:37 +02:00
|
|
|
|
|
|
|
Future<void> toggleNextSongLink(Song song) async {
|
|
|
|
await _musicDataRepository.toggleNextSongLink(song);
|
|
|
|
}
|
2020-12-28 16:41:03 +01:00
|
|
|
|
|
|
|
Future<void> addLibraryFolder(String path) async {
|
|
|
|
await _settingsRepository.addLibraryFolder(path);
|
|
|
|
}
|
2020-03-28 09:39:31 +01:00
|
|
|
}
|