mucke/lib/domain/usecases/shuffle_all.dart

56 lines
1.6 KiB
Dart
Raw Normal View History

2021-02-26 22:07:18 +01:00
import 'dart:math';
import '../entities/shuffle_mode.dart';
import '../entities/song.dart';
2021-03-06 19:09:19 +01:00
import '../modules/queue_manager.dart';
2021-02-26 22:07:18 +01:00
import '../repositories/audio_player_repository.dart';
import '../repositories/music_data_repository.dart';
import '../repositories/persistent_player_state_repository.dart';
import '../repositories/platform_integration_repository.dart';
const SHUFFLE_MODE = ShuffleMode.plus;
class ShuffleAll {
ShuffleAll(
this._audioPlayerRepository,
this._musicDataRepository,
this._platformIntegrationRepository,
this._playerStateRepository,
this._queueGenerationModule,
);
final AudioPlayerRepository _audioPlayerRepository;
final MusicDataRepository _musicDataRepository;
final PlatformIntegrationRepository _platformIntegrationRepository;
final PlayerStateRepository _playerStateRepository;
2021-03-06 19:09:19 +01:00
final QueueManagerModule _queueGenerationModule;
2021-02-26 22:07:18 +01:00
Future<void> call() async {
final List<Song> songs = await _musicDataRepository.songStream.first;
final rng = Random();
final index = rng.nextInt(songs.length);
_audioPlayerRepository.setShuffleMode(SHUFFLE_MODE);
2021-03-06 19:09:19 +01:00
await _queueGenerationModule.setQueue(
2021-02-26 22:07:18 +01:00
SHUFFLE_MODE,
songs,
index,
);
2021-03-06 19:09:19 +01:00
final queueItems = _queueGenerationModule.queue;
final songList = queueItems.map((e) => e.song).toList();
2021-02-26 22:07:18 +01:00
await _audioPlayerRepository.loadQueue(
initialIndex: 0,
2021-03-06 19:09:19 +01:00
queue: songList,
2021-02-26 22:07:18 +01:00
);
_audioPlayerRepository.play();
_platformIntegrationRepository.setCurrentSong(songs[index]);
// _platformIntegrationRepository.play();
2021-03-06 19:09:19 +01:00
_platformIntegrationRepository.setQueue(songList);
2021-02-26 22:07:18 +01:00
}
}