mucke/lib/domain/usecases/shuffle_all.dart

32 lines
778 B
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';
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
}
}