From 39cdcf648d6bf53e0fe5dce443a99a6bc49044ff Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Mon, 20 Nov 2023 14:22:01 +0100 Subject: [PATCH] Show server version message on app start --- lib/config/globals.dart | 3 ++- lib/main.dart | 12 +++++++----- lib/providers/servers_provider.dart | 2 +- lib/providers/status_provider.dart | 27 ++++++++++++++++++++++++++- lib/widgets/layout.dart | 4 ++-- 5 files changed, 38 insertions(+), 10 deletions(-) diff --git a/lib/config/globals.dart b/lib/config/globals.dart index d21860b..a955a77 100644 --- a/lib/config/globals.dart +++ b/lib/config/globals.dart @@ -1,3 +1,4 @@ import 'package:flutter/material.dart'; -final GlobalKey scaffoldMessengerKey = GlobalKey(); \ No newline at end of file +final GlobalKey scaffoldMessengerKey = GlobalKey(); +final GlobalKey globalNavigatorKey = GlobalKey(); \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index b025caa..5b38138 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -235,13 +235,16 @@ class _MainState extends State
{ Locale('tr', '') ], scaffoldMessengerKey: scaffoldMessengerKey, + navigatorKey: globalNavigatorKey, builder: (context, child) { return CustomMenuBar( child: MediaQuery( data: MediaQuery.of(context).copyWith( - textScaleFactor: !(Platform.isAndroid || Platform.isIOS) - ? 0.9 - : 1.0 + textScaler: TextScaler.linear( + !(Platform.isAndroid || Platform.isIOS) + ? 0.9 + : 1.0 + ) ), child: child!, ), @@ -251,5 +254,4 @@ class _MainState extends State
{ ), ); } -} - +} \ No newline at end of file diff --git a/lib/providers/servers_provider.dart b/lib/providers/servers_provider.dart index 600c46e..addf617 100644 --- a/lib/providers/servers_provider.dart +++ b/lib/providers/servers_provider.dart @@ -60,7 +60,7 @@ class ServersProvider with ChangeNotifier { notifyListeners(); } - void setSelectedServer(Server server) { + void setSelectedServer(Server? server) { _selectedServer = server; notifyListeners(); } diff --git a/lib/providers/status_provider.dart b/lib/providers/status_provider.dart index 38193b8..53fd2f5 100644 --- a/lib/providers/status_provider.dart +++ b/lib/providers/status_provider.dart @@ -2,6 +2,11 @@ import 'dart:async'; import 'package:flutter/material.dart'; +import 'package:adguard_home_manager/widgets/add_server/unsupported_version_modal.dart'; + +import 'package:adguard_home_manager/config/globals.dart'; +import 'package:adguard_home_manager/config/minimum_server_version.dart'; +import 'package:adguard_home_manager/functions/compare_versions.dart'; import 'package:adguard_home_manager/models/server_status.dart'; import 'package:adguard_home_manager/models/filtering_status.dart'; import 'package:adguard_home_manager/constants/enums.dart'; @@ -240,11 +245,31 @@ class StatusProvider with ChangeNotifier { final result = await _serversProvider!.apiClient2!.getServerStatus(); if (result.successful == true) { + final status = result.content as ServerStatus; setServerStatusData( - data: result.content as ServerStatus + data: status ); _loadStatus = LoadStatus.loaded; notifyListeners(); + + // Check server version and launch modal if not valid + final validVersion = serverVersionIsAhead( + currentVersion: status.serverVersion, + referenceVersion: MinimumServerVersion.stable, + referenceVersionBeta: MinimumServerVersion.beta + ); + if (validVersion == false) { + showDialog( + context: globalNavigatorKey.currentContext!, + builder: (ctx) => UnsupportedVersionModal( + serverVersion: status.serverVersion, + onClose: () { + _serversProvider!.setSelectedServer(null); + } + ) + ); + } + return true; } else { diff --git a/lib/widgets/layout.dart b/lib/widgets/layout.dart index fe3aa1c..8a0a14b 100644 --- a/lib/widgets/layout.dart +++ b/lib/widgets/layout.dart @@ -15,8 +15,8 @@ import 'package:adguard_home_manager/providers/servers_provider.dart'; class Layout extends StatefulWidget { const Layout({ - Key? key, - }) : super(key: key); + super.key, + }); @override State createState() => _LayoutState();