Fixed countdown

This commit is contained in:
Juan Gilsanz Polo 2023-05-25 18:19:58 +02:00
parent 44e0f274ec
commit 7f0c5fcefd
3 changed files with 72 additions and 54 deletions

View file

@ -11,7 +11,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/functions/snackbar.dart';
import 'package:adguard_home_manager/functions/compare_versions.dart';
import 'package:adguard_home_manager/providers/status_provider.dart';
import 'package:adguard_home_manager/functions/time_server_disabled.dart';
import 'package:adguard_home_manager/functions/format_time.dart';
import 'package:adguard_home_manager/providers/app_config_provider.dart';
class ManagementModal extends StatefulWidget {
@ -31,10 +31,6 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
late Animation<double> animation;
final ExpandableController expandableController = ExpandableController();
DateTime? currentDeadline;
Timer? countdown;
int start = 0;
@override
void initState() {
expandableController.addListener(() async {
@ -65,7 +61,6 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
@override
void dispose() {
if (countdown != null) countdown!.cancel();
animationController.dispose();
super.dispose();
}
@ -75,51 +70,6 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
final statusProvider = Provider.of<StatusProvider>(context);
final appConfigProvider = Provider.of<AppConfigProvider>(context);
void startTimer(DateTime deadline) {
setState(() {
currentDeadline = deadline;
start = deadline.difference(DateTime.now()).inSeconds+1;
});
const oneSec = Duration(seconds: 1);
countdown = Timer.periodic(
oneSec,
(Timer timer) async {
if (start == 0) {
setState(() {
timer.cancel();
});
final result = await statusProvider.getServerStatus();
if (result == false) {
setState(() {
start = start - 1;
});
}
}
},
);
}
if (
statusProvider.serverStatus != null &&
statusProvider.serverStatus!.disabledUntil != null &&
statusProvider.serverStatus!.disabledUntil != currentDeadline
) {
startTimer(statusProvider.serverStatus!.disabledUntil!);
}
if (
statusProvider.serverStatus != null &&
statusProvider.serverStatus!.generalEnabled == true
) {
setState(() {
start = 0;
currentDeadline = null;
if (countdown != null) countdown!.cancel();
countdown = null;
});
}
void updateBlocking({
required bool value,
required String filter,
@ -178,8 +128,8 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
),
if (statusProvider.serverStatus!.timeGeneralDisabled > 0) ...[
const SizedBox(height: 2),
if (currentDeadline != null) Text(
"${AppLocalizations.of(context)!.remainingTime}: ${generateRemainingTimeString(currentDeadline!.difference(DateTime.now()))}"
if (statusProvider.currentDeadline != null) Text(
"${AppLocalizations.of(context)!.remainingTime}: ${formatRemainingSeconds(statusProvider.remainingTime)}"
)
]
],