mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-07 21:48:14 -08:00
fix: Small fix to lock-screen timeOut
This commit is contained in:
parent
318f32c7e6
commit
e902e2034a
2 changed files with 30 additions and 16 deletions
|
|
@ -49,6 +49,8 @@ bool get _isDesktop {
|
|||
].contains(defaultTargetPlatform);
|
||||
}
|
||||
|
||||
bool nativeActivityStarted = false;
|
||||
|
||||
Future<Map<String, dynamic>> loadConfig() async {
|
||||
final configString = await rootBundle.loadString('config/config.json');
|
||||
return jsonDecode(configString);
|
||||
|
|
@ -118,28 +120,36 @@ class Main extends ConsumerStatefulWidget with WindowListener {
|
|||
}
|
||||
|
||||
class _MainState extends ConsumerState<Main> with WindowListener, WidgetsBindingObserver {
|
||||
DateTime dateTime = DateTime.now();
|
||||
bool hidden = false;
|
||||
DateTime _lastPaused = DateTime.now();
|
||||
bool _hidden = false;
|
||||
late final autoRouter = AutoRouter(ref: ref);
|
||||
|
||||
@override
|
||||
void didChangeAppLifecycleState(AppLifecycleState state) async {
|
||||
if (ref.read(lockScreenActiveProvider) ||
|
||||
final ignoreLifeCycle = ref.read(lockScreenActiveProvider) ||
|
||||
ref.read(userProvider) == null ||
|
||||
ref.read(videoPlayerProvider).lastState?.playing == true) {
|
||||
dateTime = DateTime.now();
|
||||
ref.read(videoPlayerProvider).lastState?.playing == true ||
|
||||
nativeActivityStarted;
|
||||
|
||||
if (ignoreLifeCycle) {
|
||||
_lastPaused = DateTime.now();
|
||||
_hidden = false;
|
||||
return;
|
||||
}
|
||||
|
||||
switch (state) {
|
||||
case AppLifecycleState.resumed:
|
||||
enableTimeOut();
|
||||
break;
|
||||
case AppLifecycleState.hidden:
|
||||
if (_hidden) {
|
||||
enableTimeOut();
|
||||
_hidden = false;
|
||||
}
|
||||
break;
|
||||
|
||||
case AppLifecycleState.paused:
|
||||
hidden = true;
|
||||
dateTime = DateTime.now();
|
||||
_hidden = true;
|
||||
_lastPaused = DateTime.now();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -147,14 +157,12 @@ class _MainState extends ConsumerState<Main> with WindowListener, WidgetsBinding
|
|||
|
||||
void enableTimeOut() async {
|
||||
final timeOut = ref.read(clientSettingsProvider).timeOut;
|
||||
|
||||
if (timeOut == null) return;
|
||||
|
||||
final difference = DateTime.now().difference(dateTime).abs();
|
||||
final difference = DateTime.now().difference(_lastPaused);
|
||||
|
||||
if (difference > timeOut && ref.read(userProvider)?.authMethod != Authentication.autoLogin && hidden) {
|
||||
hidden = false;
|
||||
dateTime = DateTime.now();
|
||||
if (difference > timeOut && ref.read(userProvider)?.authMethod != Authentication.autoLogin) {
|
||||
_lastPaused = DateTime.now();
|
||||
|
||||
// Stop playback if the user was still watching a video
|
||||
await ref.read(videoPlayerProvider).pause();
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import 'dart:async';
|
|||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:fladder/main.dart';
|
||||
import 'package:fladder/models/items/media_streams_model.dart';
|
||||
import 'package:fladder/models/playback/direct_playback_model.dart';
|
||||
import 'package:fladder/models/playback/offline_playback_model.dart';
|
||||
|
|
@ -17,6 +18,7 @@ class NativePlayer extends BasePlayer implements VideoPlayerListenerCallback {
|
|||
|
||||
@override
|
||||
Future<void> dispose() async {
|
||||
nativeActivityStarted = false;
|
||||
return NativeVideoActivity().disposeActivity();
|
||||
}
|
||||
|
||||
|
|
@ -32,7 +34,10 @@ class NativePlayer extends BasePlayer implements VideoPlayerListenerCallback {
|
|||
Future<void> loadVideo(String url, bool play) async => player.open(url, play);
|
||||
|
||||
@override
|
||||
Future<void> open(BuildContext newContext) async => NativeVideoActivity().launchActivity();
|
||||
Future<void> open(BuildContext newContext) async {
|
||||
nativeActivityStarted = true;
|
||||
NativeVideoActivity().launchActivity();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> pause() {
|
||||
|
|
@ -72,6 +77,7 @@ class NativePlayer extends BasePlayer implements VideoPlayerListenerCallback {
|
|||
|
||||
@override
|
||||
Future<void> stop() async {
|
||||
nativeActivityStarted = false;
|
||||
return player.stop();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue