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
|
@riverpod
|
||||||
class ShakeDetector extends _$ShakeDetector {
|
class ShakeDetector extends _$ShakeDetector {
|
||||||
|
bool wasPlayerLoaded = false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
core.ShakeDetector? build() {
|
core.ShakeDetector? build() {
|
||||||
final appSettings = ref.watch(appSettingsProvider);
|
final appSettings = ref.watch(appSettingsProvider);
|
||||||
|
|
@ -34,18 +36,29 @@ class ShakeDetector extends _$ShakeDetector {
|
||||||
// when paused or playing
|
// when paused or playing
|
||||||
|
|
||||||
// if no book is loaded, shake detection should not be enabled
|
// 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
|
// if sleep timer is not enabled, shake detection should not be enabled
|
||||||
final sleepTimer = ref.watch(sleepTimerProvider);
|
final sleepTimer = ref.watch(sleepTimerProvider);
|
||||||
if (!shakeDetectionSettings.shakeAction.isPlaybackManagementEnabled &&
|
if (!shakeDetectionSettings.shakeAction.isPlaybackManagementEnabled &&
|
||||||
|
|
@ -95,13 +108,22 @@ class ShakeDetector extends _$ShakeDetector {
|
||||||
return true;
|
return true;
|
||||||
case ShakeAction.fastForward:
|
case ShakeAction.fastForward:
|
||||||
_logger.fine('Fast forwarding');
|
_logger.fine('Fast forwarding');
|
||||||
|
if (!player.playing) {
|
||||||
|
_logger.warning('Player is not playing');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
player.seek(player.position + const Duration(seconds: 30));
|
player.seek(player.position + const Duration(seconds: 30));
|
||||||
return true;
|
return true;
|
||||||
case ShakeAction.rewind:
|
case ShakeAction.rewind:
|
||||||
_logger.fine('Rewinding');
|
_logger.fine('Rewinding');
|
||||||
|
if (!player.playing) {
|
||||||
|
_logger.warning('Player is not playing');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
player.seek(player.position - const Duration(seconds: 30));
|
player.seek(player.position - const Duration(seconds: 30));
|
||||||
return true;
|
return true;
|
||||||
case ShakeAction.playPause:
|
case ShakeAction.playPause:
|
||||||
|
_logger.fine('Toggling play/pause');
|
||||||
player.togglePlayPause();
|
player.togglePlayPause();
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ part of 'shake_detector.dart';
|
||||||
// RiverpodGenerator
|
// RiverpodGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
String _$shakeDetectorHash() => r'e22fbd7a3b0143db3a9e2c8489749ee0dd8cd25a';
|
String _$shakeDetectorHash() => r'2a380bab1d4021d05d2ae40fec964a5f33d3730c';
|
||||||
|
|
||||||
/// See also [ShakeDetector].
|
/// See also [ShakeDetector].
|
||||||
@ProviderFor(ShakeDetector)
|
@ProviderFor(ShakeDetector)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue