Show server version message on app start

This commit is contained in:
Juan Gilsanz Polo 2023-11-20 14:22:01 +01:00
parent dbb2609339
commit 39cdcf648d
5 changed files with 38 additions and 10 deletions

View file

@ -1,3 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
final GlobalKey<ScaffoldMessengerState> scaffoldMessengerKey = GlobalKey<ScaffoldMessengerState>(); final GlobalKey<ScaffoldMessengerState> scaffoldMessengerKey = GlobalKey<ScaffoldMessengerState>();
final GlobalKey<NavigatorState> globalNavigatorKey = GlobalKey<NavigatorState>();

View file

@ -235,13 +235,16 @@ class _MainState extends State<Main> {
Locale('tr', '') Locale('tr', '')
], ],
scaffoldMessengerKey: scaffoldMessengerKey, scaffoldMessengerKey: scaffoldMessengerKey,
navigatorKey: globalNavigatorKey,
builder: (context, child) { builder: (context, child) {
return CustomMenuBar( return CustomMenuBar(
child: MediaQuery( child: MediaQuery(
data: MediaQuery.of(context).copyWith( data: MediaQuery.of(context).copyWith(
textScaleFactor: !(Platform.isAndroid || Platform.isIOS) textScaler: TextScaler.linear(
? 0.9 !(Platform.isAndroid || Platform.isIOS)
: 1.0 ? 0.9
: 1.0
)
), ),
child: child!, child: child!,
), ),
@ -251,5 +254,4 @@ class _MainState extends State<Main> {
), ),
); );
} }
} }

View file

@ -60,7 +60,7 @@ class ServersProvider with ChangeNotifier {
notifyListeners(); notifyListeners();
} }
void setSelectedServer(Server server) { void setSelectedServer(Server? server) {
_selectedServer = server; _selectedServer = server;
notifyListeners(); notifyListeners();
} }

View file

@ -2,6 +2,11 @@ import 'dart:async';
import 'package:flutter/material.dart'; 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/server_status.dart';
import 'package:adguard_home_manager/models/filtering_status.dart'; import 'package:adguard_home_manager/models/filtering_status.dart';
import 'package:adguard_home_manager/constants/enums.dart'; import 'package:adguard_home_manager/constants/enums.dart';
@ -240,11 +245,31 @@ class StatusProvider with ChangeNotifier {
final result = await _serversProvider!.apiClient2!.getServerStatus(); final result = await _serversProvider!.apiClient2!.getServerStatus();
if (result.successful == true) { if (result.successful == true) {
final status = result.content as ServerStatus;
setServerStatusData( setServerStatusData(
data: result.content as ServerStatus data: status
); );
_loadStatus = LoadStatus.loaded; _loadStatus = LoadStatus.loaded;
notifyListeners(); 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; return true;
} }
else { else {

View file

@ -15,8 +15,8 @@ import 'package:adguard_home_manager/providers/servers_provider.dart';
class Layout extends StatefulWidget { class Layout extends StatefulWidget {
const Layout({ const Layout({
Key? key, super.key,
}) : super(key: key); });
@override @override
State<Layout> createState() => _LayoutState(); State<Layout> createState() => _LayoutState();