fix: Add debouncer to video init

This commit is contained in:
PartyDonut 2025-10-09 12:56:20 +02:00
parent 24d6eb52b9
commit 3b8db131f7

View file

@ -15,6 +15,7 @@ import 'package:fladder/providers/shared_provider.dart';
import 'package:fladder/providers/user_provider.dart'; import 'package:fladder/providers/user_provider.dart';
import 'package:fladder/providers/video_player_provider.dart'; import 'package:fladder/providers/video_player_provider.dart';
import 'package:fladder/src/player_settings_helper.g.dart' as pigeon; import 'package:fladder/src/player_settings_helper.g.dart' as pigeon;
import 'package:fladder/util/debouncer.dart';
final videoPlayerSettingsProvider = final videoPlayerSettingsProvider =
StateNotifierProvider<VideoPlayerSettingsProviderNotifier, VideoPlayerSettingsModel>((ref) { StateNotifierProvider<VideoPlayerSettingsProviderNotifier, VideoPlayerSettingsModel>((ref) {
@ -28,16 +29,16 @@ class VideoPlayerSettingsProviderNotifier extends StateNotifier<VideoPlayerSetti
final Ref ref; final Ref ref;
final Debouncer debouncer = Debouncer(const Duration(seconds: 2));
@override @override
set state(VideoPlayerSettingsModel value) { set state(VideoPlayerSettingsModel value) {
final oldState = super.state; final oldState = super.state;
super.state = value; super.state = value;
ref.read(sharedUtilityProvider).videoPlayerSettings = value; ref.read(sharedUtilityProvider).videoPlayerSettings = value;
if (!oldState.playerSame(value)) {
ref.read(videoPlayerProvider.notifier).init();
}
final userData = ref.read(userProvider);
if (!kIsWeb && Platform.isAndroid) { if (!kIsWeb && Platform.isAndroid) {
final userData = ref.read(userProvider);
pigeon.PlayerSettingsPigeon().sendPlayerSettings( pigeon.PlayerSettingsPigeon().sendPlayerSettings(
pigeon.PlayerSettings( pigeon.PlayerSettings(
enableTunneling: value.enableTunneling, enableTunneling: value.enableTunneling,
@ -63,6 +64,12 @@ class VideoPlayerSettingsProviderNotifier extends StateNotifier<VideoPlayerSetti
), ),
); );
} }
debouncer.run(() {
if (!oldState.playerSame(value)) {
ref.read(videoPlayerProvider.notifier).init();
}
});
} }
void setScreenBrightness(double? value) async { void setScreenBrightness(double? value) async {