mucke/lib/domain/usecases/shuffle_all.dart

32 lines
844 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';
2021-10-08 19:13:10 +02:00
import '../repositories/audio_player_repository.dart';
2021-02-26 22:07:18 +01:00
import '../repositories/music_data_repository.dart';
2021-04-16 18:58:27 +02:00
import 'play_songs.dart';
2021-02-26 22:07:18 +01:00
const SHUFFLE_MODE = ShuffleMode.plus;
class ShuffleAll {
ShuffleAll(
2021-10-08 19:13:10 +02:00
this._audioPlayerRepository,
2021-02-26 22:07:18 +01:00
this._musicDataRepository,
2021-04-16 18:58:27 +02:00
this._playSongs,
2021-02-26 22:07:18 +01:00
);
2021-04-16 18:58:27 +02:00
final PlaySongs _playSongs;
2021-02-26 22:07:18 +01:00
2021-10-08 19:13:10 +02:00
final AudioPlayerRepository _audioPlayerRepository;
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-10-08 19:13:10 +02:00
await _audioPlayerRepository.setShuffleMode(SHUFFLE_MODE, updateQueue: false);
2021-04-16 18:58:27 +02:00
_playSongs(songs: songs, initialIndex: index);
2021-02-26 22:07:18 +01:00
}
}