mirror of
https://github.com/Dr-Blank/Vaani.git
synced 2026-07-06 17:31:33 +00:00
disable shake detector when player not playing anything
This commit is contained in:
parent
a15d634cd2
commit
c7a5d68781
2 changed files with 34 additions and 12 deletions
|
|
@ -19,6 +19,8 @@ Logger _logger = Logger('ShakeDetector');
|
|||
|
||||
@riverpod
|
||||
class ShakeDetector extends _$ShakeDetector {
|
||||
bool wasPlayerLoaded = false;
|
||||
|
||||
@override
|
||||
core.ShakeDetector? build() {
|
||||
final appSettings = ref.watch(appSettingsProvider);
|
||||
|
|
@ -34,18 +36,29 @@ class ShakeDetector extends _$ShakeDetector {
|
|||
// when paused or playing
|
||||
|
||||
// if no book is loaded, shake detection should not be enabled
|
||||
// final player = ref.watch(audiobookPlayerProvider);
|
||||
final player = ref.watch(simpleAudiobookPlayerProvider);
|
||||
player.playerStateStream.listen((event) {
|
||||
if (event.processingState == ProcessingState.idle && wasPlayerLoaded) {
|
||||
_logger.config('Player is now not loaded, invalidating');
|
||||
wasPlayerLoaded = false;
|
||||
ref.invalidateSelf();
|
||||
}
|
||||
if (event.processingState != ProcessingState.idle && !wasPlayerLoaded) {
|
||||
_logger.config('Player is now loaded, invalidating');
|
||||
wasPlayerLoaded = true;
|
||||
ref.invalidateSelf();
|
||||
}
|
||||
});
|
||||
|
||||
if (player.book == null) {
|
||||
_logger.config('No book is loaded, disabling shake detection');
|
||||
wasPlayerLoaded = false;
|
||||
return null;
|
||||
} else {
|
||||
_logger.finer('Book is loaded, marking player as loaded');
|
||||
wasPlayerLoaded = true;
|
||||
}
|
||||
|
||||
// if (player.book == null) {
|
||||
// _logger.config('No book is loaded');
|
||||
// return null;
|
||||
// }
|
||||
// if (!player.playing && !shakeDetectionSettings.isActiveWhenPaused) {
|
||||
// _logger.config(
|
||||
// 'Shake detection is disabled when paused and player is not playing',
|
||||
// );
|
||||
// return null;
|
||||
// }
|
||||
// if sleep timer is not enabled, shake detection should not be enabled
|
||||
final sleepTimer = ref.watch(sleepTimerProvider);
|
||||
if (!shakeDetectionSettings.shakeAction.isPlaybackManagementEnabled &&
|
||||
|
|
@ -95,13 +108,22 @@ class ShakeDetector extends _$ShakeDetector {
|
|||
return true;
|
||||
case ShakeAction.fastForward:
|
||||
_logger.fine('Fast forwarding');
|
||||
if (!player.playing) {
|
||||
_logger.warning('Player is not playing');
|
||||
return false;
|
||||
}
|
||||
player.seek(player.position + const Duration(seconds: 30));
|
||||
return true;
|
||||
case ShakeAction.rewind:
|
||||
_logger.fine('Rewinding');
|
||||
if (!player.playing) {
|
||||
_logger.warning('Player is not playing');
|
||||
return false;
|
||||
}
|
||||
player.seek(player.position - const Duration(seconds: 30));
|
||||
return true;
|
||||
case ShakeAction.playPause:
|
||||
_logger.fine('Toggling play/pause');
|
||||
player.togglePlayPause();
|
||||
return true;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'shake_detector.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$shakeDetectorHash() => r'e22fbd7a3b0143db3a9e2c8489749ee0dd8cd25a';
|
||||
String _$shakeDetectorHash() => r'2a380bab1d4021d05d2ae40fec964a5f33d3730c';
|
||||
|
||||
/// See also [ShakeDetector].
|
||||
@ProviderFor(ShakeDetector)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue