mucke/lib/presentation/state/audio_store.dart

56 lines
1.3 KiB
Dart
Raw Normal View History

2020-04-07 22:06:43 +02:00
import 'package:meta/meta.dart';
import 'package:mobx/mobx.dart';
import '../../domain/entities/song.dart';
import '../../domain/repositories/audio_repository.dart';
import '../../domain/repositories/music_data_repository.dart';
part 'audio_store.g.dart';
class AudioStore extends _AudioStore with _$AudioStore {
AudioStore({@required MusicDataRepository musicDataRepository, @required AudioRepository audioRepository})
: super(musicDataRepository, audioRepository);
}
abstract class _AudioStore with Store {
_AudioStore(this._musicDataRepository, this._audioRepository);
final MusicDataRepository _musicDataRepository;
final AudioRepository _audioRepository;
2020-04-09 17:50:28 +02:00
ReactionDisposer _disposer;
@observable
ObservableStream<Song> currentSong;
@observable
Song song;
@action
Future<void> init() async {
currentSong = _audioRepository.watchCurrentSong.asObservable();
_disposer = autorun((_) {
updateSong(currentSong.value);
});
}
void dispose() {
_disposer();
}
2020-04-07 22:06:43 +02:00
@action
Future<void> playSong(int index, List<Song> songList) async {
_audioRepository.playSong(index, songList);
}
2020-04-09 17:50:28 +02:00
@action
Future<void> updateSong(Song streamValue) async {
print('updateSong');
if (streamValue != null && streamValue != song) {
print('actually updating...');
song = streamValue;
}
}
2020-04-07 22:06:43 +02:00
}