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