mucke/lib/system/repositories/audio_repository_impl.dart

46 lines
1.2 KiB
Dart
Raw Normal View History

2020-04-06 22:33:26 +02:00
import 'package:dartz/dartz.dart';
import '../../core/error/failures.dart';
2020-04-10 20:12:26 +02:00
import '../../domain/entities/playback_state.dart';
2020-04-06 22:33:26 +02:00
import '../../domain/entities/song.dart';
import '../../domain/repositories/audio_repository.dart';
import '../datasources/audio_manager_contract.dart';
2020-04-09 17:50:28 +02:00
import '../models/song_model.dart';
2020-04-06 22:33:26 +02:00
class AudioRepositoryImpl implements AudioRepository {
AudioRepositoryImpl(this._audioManager);
final AudioManager _audioManager;
@override
2020-04-10 20:12:26 +02:00
Stream<Song> get currentSongStream => _audioManager.currentSongStream;
@override
Stream<PlaybackState> get playbackStateStream =>
_audioManager.playbackStateStream;
2020-04-09 17:50:28 +02:00
@override
Future<Either<Failure, void>> playSong(int index, List<Song> songList) async {
final List<SongModel> songModelList =
songList.map((song) => song as SongModel).toList();
2020-04-06 22:33:26 +02:00
if (0 <= index && index < songList.length) {
await _audioManager.playSong(index, songModelList);
2020-04-09 17:50:28 +02:00
return Right(null);
2020-04-06 22:33:26 +02:00
}
return Left(IndexFailure());
}
2020-04-10 20:12:26 +02:00
@override
Future<Either<Failure, void>> play() async {
await _audioManager.play();
return Right(null);
}
@override
Future<Either<Failure, void>> pause() async {
await _audioManager.pause();
return Right(null);
}
2020-04-06 22:33:26 +02:00
}