2021-02-26 22:07:18 +01:00
|
|
|
import 'dart:math';
|
|
|
|
|
|
|
|
import '../entities/shuffle_mode.dart';
|
|
|
|
import '../entities/song.dart';
|
|
|
|
import '../repositories/music_data_repository.dart';
|
2021-04-16 18:58:27 +02:00
|
|
|
import 'play_songs.dart';
|
|
|
|
import 'set_shuffle_mode.dart';
|
2021-02-26 22:07:18 +01:00
|
|
|
|
|
|
|
const SHUFFLE_MODE = ShuffleMode.plus;
|
|
|
|
|
|
|
|
class ShuffleAll {
|
|
|
|
ShuffleAll(
|
|
|
|
this._musicDataRepository,
|
2021-04-16 18:58:27 +02:00
|
|
|
this._playSongs,
|
|
|
|
this._setShuffleMode,
|
2021-02-26 22:07:18 +01:00
|
|
|
);
|
|
|
|
|
2021-04-16 18:58:27 +02:00
|
|
|
final PlaySongs _playSongs;
|
|
|
|
final SetShuffleMode _setShuffleMode;
|
2021-02-26 22:07:18 +01:00
|
|
|
|
2021-04-16 18:58:27 +02:00
|
|
|
final MusicDataRepository _musicDataRepository;
|
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);
|
|
|
|
|
2021-04-16 18:58:27 +02:00
|
|
|
await _setShuffleMode(SHUFFLE_MODE, updateQueue: false);
|
|
|
|
_playSongs(songs: songs, initialIndex: index);
|
2021-02-26 22:07:18 +01:00
|
|
|
}
|
|
|
|
}
|