cleanup
This commit is contained in:
parent
2cb557ab6f
commit
3c81067270
8 changed files with 10 additions and 114 deletions
|
@ -9,10 +9,7 @@ import '../entities/song.dart';
|
|||
abstract class AudioRepository {
|
||||
Stream<Song> get currentSongStream;
|
||||
Stream<PlaybackState> get playbackStateStream;
|
||||
Stream<List<Song>> get queueStream;
|
||||
Stream<int> get queueIndexStream;
|
||||
Stream<int> get currentPositionStream;
|
||||
Stream<ShuffleMode> get shuffleModeStream;
|
||||
|
||||
Future<Either<Failure, void>> playSong(int index, List<Song> songList);
|
||||
Future<Either<Failure, void>> play();
|
||||
|
@ -21,7 +18,7 @@ abstract class AudioRepository {
|
|||
Future<Either<Failure, void>> skipToPrevious();
|
||||
Future<void> setIndex(int index);
|
||||
|
||||
Future<Either<Failure, void>> setShuffleMode(ShuffleMode shuffleMode);
|
||||
Future<void> setShuffleMode(ShuffleMode shuffleMode);
|
||||
Future<void> setLoopMode(LoopMode loopMode);
|
||||
|
||||
Future<Either<Failure, void>> shuffleAll();
|
||||
|
|
|
@ -19,14 +19,11 @@ class AudioStore extends _AudioStore with _$AudioStore {
|
|||
|
||||
abstract class _AudioStore with Store {
|
||||
_AudioStore(this._audioRepository, this._persistentPlayerStateRepository) {
|
||||
currentSongStream = _audioRepository.currentSongStream.distinct().asObservable();
|
||||
|
||||
currentPositionStream = _audioRepository.currentPositionStream.asObservable(initialValue: 0);
|
||||
|
||||
queueStream = _persistentPlayerStateRepository.queueStream.asObservable();
|
||||
|
||||
queueIndexStream = _persistentPlayerStateRepository.currentIndexStream.asObservable();
|
||||
// queueIndexStream = _audioRepository.queueIndexStream.asObservable();
|
||||
|
||||
shuffleModeStream = _persistentPlayerStateRepository.shuffleModeStream.asObservable();
|
||||
|
||||
|
@ -38,15 +35,8 @@ abstract class _AudioStore with Store {
|
|||
final AudioRepository _audioRepository;
|
||||
final PlayerStateRepository _persistentPlayerStateRepository;
|
||||
|
||||
@observable
|
||||
ObservableStream<Song> currentSongStream;
|
||||
|
||||
@computed
|
||||
Song get currentSong {
|
||||
print('currentSong!!!');
|
||||
print(queueStream.value);
|
||||
print(queueIndexStream.value);
|
||||
|
||||
if (queueStream.value != null && queueIndexStream.value != null) {
|
||||
if (queueIndexStream.value < queueStream.value.length) {
|
||||
final song = queueStream.value[queueIndexStream.value];
|
||||
|
|
|
@ -17,21 +17,6 @@ mixin _$AudioStore on _AudioStore, Store {
|
|||
name: '_AudioStore.currentSong'))
|
||||
.value;
|
||||
|
||||
final _$currentSongStreamAtom = Atom(name: '_AudioStore.currentSongStream');
|
||||
|
||||
@override
|
||||
ObservableStream<Song> get currentSongStream {
|
||||
_$currentSongStreamAtom.reportRead();
|
||||
return super.currentSongStream;
|
||||
}
|
||||
|
||||
@override
|
||||
set currentSongStream(ObservableStream<Song> value) {
|
||||
_$currentSongStreamAtom.reportWrite(value, super.currentSongStream, () {
|
||||
super.currentSongStream = value;
|
||||
});
|
||||
}
|
||||
|
||||
final _$playbackStateStreamAtom =
|
||||
Atom(name: '_AudioStore.playbackStateStream');
|
||||
|
||||
|
@ -128,7 +113,6 @@ mixin _$AudioStore on _AudioStore, Store {
|
|||
@override
|
||||
String toString() {
|
||||
return '''
|
||||
currentSongStream: ${currentSongStream},
|
||||
playbackStateStream: ${playbackStateStream},
|
||||
currentPositionStream: ${currentPositionStream},
|
||||
queueStream: ${queueStream},
|
||||
|
|
|
@ -30,7 +30,6 @@ class MyAudioHandler extends BaseAudioHandler {
|
|||
|
||||
_audioPlayer.shuffleModeStream.listen((shuffleMode) {
|
||||
_playerStateDataSource.setShuffleMode(shuffleMode);
|
||||
customEventSubject.add({SHUFFLE_MODE: shuffleMode});
|
||||
});
|
||||
|
||||
_audioPlayer.loopModeStream.listen((event) {
|
||||
|
@ -108,8 +107,6 @@ class MyAudioHandler extends BaseAudioHandler {
|
|||
final context = arguments['CONTEXT'] as List<String>;
|
||||
final index = arguments['INDEX'] as int;
|
||||
return playWithContext(context, index);
|
||||
case APP_LIFECYCLE_RESUMED:
|
||||
return onAppLifecycleResumed();
|
||||
case SET_SHUFFLE_MODE:
|
||||
return setCustomShuffleMode(arguments['SHUFFLE_MODE'] as ShuffleMode);
|
||||
case SET_LOOP_MODE:
|
||||
|
@ -134,11 +131,6 @@ class MyAudioHandler extends BaseAudioHandler {
|
|||
_audioPlayer.playSongList(songs, index);
|
||||
}
|
||||
|
||||
Future<void> onAppLifecycleResumed() async {
|
||||
// customEventSubject.add({SHUFFLE_MODE: shuffleMode});
|
||||
// customEventSubject.add({KEY_INDEX: playbackIndex});
|
||||
}
|
||||
|
||||
Future<void> setCustomShuffleMode(ShuffleMode mode) async {
|
||||
_audioPlayer.setShuffleMode(mode, true);
|
||||
}
|
||||
|
@ -175,7 +167,6 @@ class MyAudioHandler extends BaseAudioHandler {
|
|||
void _handlePlaybackEvent(PlaybackEventModel pe) {
|
||||
if (pe.index != null) {
|
||||
_playerStateDataSource.setCurrentIndex(pe.index);
|
||||
customEventSubject.add({KEY_INDEX: pe.index});
|
||||
}
|
||||
|
||||
if (pe.processingState == ProcessingState.ready) {
|
||||
|
|
|
@ -13,25 +13,12 @@ import 'stream_constants.dart';
|
|||
typedef Conversion<S, T> = T Function(S);
|
||||
|
||||
class AudioManagerImpl implements AudioManager {
|
||||
AudioManagerImpl(this._audioHandler) {
|
||||
_audioHandler.customEventStream.listen((event) {
|
||||
final data = event as Map<String, dynamic>;
|
||||
if (data.containsKey(KEY_INDEX)) {
|
||||
_queueIndex = data[KEY_INDEX] as int;
|
||||
}
|
||||
if (data.containsKey(SHUFFLE_MODE)) {
|
||||
_shuffleMode = data[SHUFFLE_MODE] as ShuffleMode;
|
||||
}
|
||||
});
|
||||
}
|
||||
AudioManagerImpl(this._audioHandler);
|
||||
|
||||
final AudioHandler _audioHandler;
|
||||
int _queueIndex;
|
||||
ShuffleMode _shuffleMode;
|
||||
|
||||
@override
|
||||
Stream<SongModel> get currentSongStream =>
|
||||
_filterStream<MediaItem, SongModel>(
|
||||
Stream<SongModel> get currentSongStream => _filterStream<MediaItem, SongModel>(
|
||||
_audioHandler.mediaItem.stream,
|
||||
(MediaItem mi) => SongModel.fromMediaItem(mi),
|
||||
);
|
||||
|
@ -42,46 +29,6 @@ class AudioManagerImpl implements AudioManager {
|
|||
(PlaybackState ps) => PlaybackStateModel.fromASPlaybackState(ps),
|
||||
);
|
||||
|
||||
// TODO: test
|
||||
@override
|
||||
Stream<List<SongModel>> get queueStream {
|
||||
return _audioHandler.queue.stream.map((mediaItems) =>
|
||||
mediaItems.map((m) => SongModel.fromMediaItem(m)).toList());
|
||||
}
|
||||
|
||||
@override
|
||||
Stream<int> get queueIndexStream =>
|
||||
_queueIndexStream(_audioHandler.customEventStream.cast());
|
||||
|
||||
Stream<int> _queueIndexStream(Stream<Map<String, dynamic>> source) async* {
|
||||
if (_queueIndex != null) {
|
||||
yield _queueIndex;
|
||||
}
|
||||
|
||||
await for (final data in source) {
|
||||
if (data.containsKey(KEY_INDEX)) {
|
||||
yield data[KEY_INDEX] as int;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Stream<ShuffleMode> get shuffleModeStream =>
|
||||
_shuffleModeStream(_audioHandler.customEventStream.cast());
|
||||
|
||||
Stream<ShuffleMode> _shuffleModeStream(
|
||||
Stream<Map<String, dynamic>> source) async* {
|
||||
if (_shuffleMode != null) {
|
||||
yield _shuffleMode;
|
||||
}
|
||||
|
||||
await for (final data in source) {
|
||||
if (data.containsKey(SHUFFLE_MODE)) {
|
||||
yield data[SHUFFLE_MODE] as ShuffleMode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Stream<int> get currentPositionStream => _position().distinct();
|
||||
|
||||
|
@ -154,8 +101,7 @@ class AudioManagerImpl implements AudioManager {
|
|||
if (statePosition != null && updateTime != null && state != null) {
|
||||
if (state.playing) {
|
||||
yield statePosition.inMilliseconds +
|
||||
(DateTime.now().millisecondsSinceEpoch -
|
||||
updateTime.millisecondsSinceEpoch);
|
||||
(DateTime.now().millisecondsSinceEpoch - updateTime.millisecondsSinceEpoch);
|
||||
} else {
|
||||
yield statePosition.inMilliseconds;
|
||||
}
|
||||
|
@ -178,7 +124,10 @@ class AudioManagerImpl implements AudioManager {
|
|||
|
||||
@override
|
||||
Future<void> moveQueueItem(int oldIndex, int newIndex) async {
|
||||
await _audioHandler.customAction(MOVE_QUEUE_ITEM, {'OLD_INDEX': oldIndex, 'NEW_INDEX': newIndex});
|
||||
await _audioHandler.customAction(MOVE_QUEUE_ITEM, {
|
||||
'OLD_INDEX': oldIndex,
|
||||
'NEW_INDEX': newIndex,
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
@ -6,11 +6,9 @@ import '../models/song_model.dart';
|
|||
abstract class AudioManager {
|
||||
Stream<SongModel> get currentSongStream;
|
||||
Stream<PlaybackState> get playbackStateStream;
|
||||
Stream<List<SongModel>> get queueStream;
|
||||
Stream<int> get queueIndexStream;
|
||||
|
||||
/// Current position in the song in milliseconds.
|
||||
Stream<int> get currentPositionStream;
|
||||
Stream<ShuffleMode> get shuffleModeStream;
|
||||
|
||||
Future<void> playSong(int index, List<SongModel> songList);
|
||||
Future<void> play();
|
||||
|
@ -24,4 +22,4 @@ abstract class AudioManager {
|
|||
Future<void> addToQueue(SongModel songModel);
|
||||
Future<void> moveQueueItem(int oldIndex, int newIndex);
|
||||
Future<void> removeQueueIndex(int index);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
const String KEY_INDEX = 'INDEX';
|
||||
const String SHUFFLE_MODE = 'SHUFFLE_MODE';
|
||||
|
||||
const String PLAY_WITH_CONTEXT = 'PLAY_WITH_CONTEXT';
|
||||
const String APP_LIFECYCLE_RESUMED = 'APP_LIFECYCLE_RESUMED';
|
||||
const String SHUFFLE_ALL = 'SHUFFLE_ALL';
|
||||
const String SET_SHUFFLE_MODE = 'SET_SHUFFLE_MODE';
|
||||
const String SET_LOOP_MODE = 'SET_LOOP_MODE';
|
||||
|
|
|
@ -21,15 +21,6 @@ class AudioRepositoryImpl implements AudioRepository {
|
|||
Stream<PlaybackState> get playbackStateStream =>
|
||||
_audioManager.playbackStateStream;
|
||||
|
||||
@override
|
||||
Stream<List<Song>> get queueStream => _audioManager.queueStream;
|
||||
|
||||
@override
|
||||
Stream<int> get queueIndexStream => _audioManager.queueIndexStream;
|
||||
|
||||
@override
|
||||
Stream<ShuffleMode> get shuffleModeStream => _audioManager.shuffleModeStream;
|
||||
|
||||
@override
|
||||
Stream<int> get currentPositionStream => _audioManager.currentPositionStream;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue