import 'package:dartz/dartz.dart'; import '../../core/error/failures.dart'; import '../../domain/entities/playback_state.dart'; import '../../domain/entities/song.dart'; import '../../domain/repositories/audio_repository.dart'; import '../datasources/audio_manager_contract.dart'; import '../models/song_model.dart'; class AudioRepositoryImpl implements AudioRepository { AudioRepositoryImpl(this._audioManager); final AudioManager _audioManager; @override Stream get currentSongStream => _audioManager.currentSongStream; @override Stream get playbackStateStream => _audioManager.playbackStateStream; @override Stream get currentPositionStream { return _audioManager.currentPositionStream; } @override Future> playSong(int index, List songList) async { final List songModelList = songList.map((song) => song as SongModel).toList(); if (0 <= index && index < songList.length) { await _audioManager.playSong(index, songModelList); return Right(null); } return Left(IndexFailure()); } @override Future> play() async { await _audioManager.play(); return Right(null); } @override Future> pause() async { await _audioManager.pause(); return Right(null); } }