42 lines
1.4 KiB
Dart
42 lines
1.4 KiB
Dart
import '../entities/song.dart';
|
|
import '../modules/queue_generator.dart';
|
|
import '../repositories/audio_player_repository.dart';
|
|
import '../repositories/persistent_player_state_repository.dart';
|
|
import '../repositories/platform_integration_repository.dart';
|
|
|
|
class PlaySongs {
|
|
PlaySongs(
|
|
this._audioPlayerRepository,
|
|
this._platformIntegrationRepository,
|
|
this._playerStateRepository,
|
|
this._queueGenerationModule,
|
|
);
|
|
|
|
final AudioPlayerRepository _audioPlayerRepository;
|
|
final PlatformIntegrationRepository _platformIntegrationRepository;
|
|
final PlayerStateRepository _playerStateRepository;
|
|
|
|
final QueueGenerationModule _queueGenerationModule;
|
|
|
|
Future<void> call({List<Song> songs, int initialIndex}) async {
|
|
if (0 <= initialIndex && initialIndex < songs.length) {
|
|
// _audioPlayerRepository.playSong(songs[initialIndex]);
|
|
|
|
final queueItems = await _queueGenerationModule.generateQueue(
|
|
_audioPlayerRepository.shuffleModeStream.value,
|
|
songs,
|
|
initialIndex,
|
|
);
|
|
|
|
await _audioPlayerRepository.loadQueue(
|
|
initialIndex: initialIndex,
|
|
queue: queueItems,
|
|
);
|
|
_audioPlayerRepository.play();
|
|
|
|
_platformIntegrationRepository.setCurrentSong(songs[initialIndex]);
|
|
// _platformIntegrationRepository.play();
|
|
_platformIntegrationRepository.setQueue(queueItems.map((e) => e.song).toList());
|
|
}
|
|
}
|
|
}
|