From ad27d0c24e8b3a44663b5267594608d5d9eacdf2 Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Fri, 12 May 2023 23:11:38 +0200 Subject: [PATCH] Bug fixes --- lib/base.dart | 4 ++- lib/functions/compare_versions.dart | 41 +++++++++++++--------- lib/screens/clients/added_client_tile.dart | 9 ++--- lib/screens/clients/added_list.dart | 1 + lib/screens/home/home.dart | 10 +++--- lib/screens/home/management_modal.dart | 2 +- lib/screens/logs/log_details_screen.dart | 2 +- lib/screens/logs/log_tile.dart | 4 +-- lib/screens/logs/logs.dart | 2 ++ lib/screens/logs/logs_config_modal.dart | 13 ++++--- lib/screens/settings/dns/upstream_dns.dart | 2 +- lib/screens/top_items/top_items.dart | 9 +++-- lib/services/http_requests.dart | 4 ++- lib/widgets/add_server_modal.dart | 9 +++-- 14 files changed, 69 insertions(+), 43 deletions(-) diff --git a/lib/base.dart b/lib/base.dart index a0ad7e4..561b115 100644 --- a/lib/base.dart +++ b/lib/base.dart @@ -116,7 +116,9 @@ class _BaseState extends State with WidgetsBindingObserver { : screensSelectServer; if (kDebugMode && dotenv.env['ENABLE_SENTRY'] == "true") { - Sentry.captureMessage("Debug mode"); + Sentry.captureException("Debug mode", stackTrace: { + "aaa": "aaa" + }); } return CustomMenuBar( diff --git a/lib/functions/compare_versions.dart b/lib/functions/compare_versions.dart index 7c0274e..e1b8fca 100644 --- a/lib/functions/compare_versions.dart +++ b/lib/functions/compare_versions.dart @@ -21,11 +21,14 @@ bool compareVersions({ return false; } } catch (e) { - Sentry.captureException(e, hint: Hint.withMap({ - "fn": "compareVersions", - "currentVersion": currentVersion, - "newVersion": newVersion, - })); + Sentry.captureException(e); + Sentry.captureMessage("compareVersions error", params: [ + { + "fn": "compareVersions", + "currentVersion": currentVersion, + "newVersion": newVersion, + }.toString() + ]); return false; } } @@ -57,11 +60,14 @@ bool compareBetaVersions({ return false; } } catch (e) { - Sentry.captureException(e, hint: Hint.withMap({ - "fn": "compareBetaVersions", - "currentVersion": currentVersion, - "newVersion": newVersion, - })); + Sentry.captureException(e); + Sentry.captureMessage("compareBetaVersions error", params: [ + { + "fn": "compareBetaVersions", + "currentVersion": currentVersion, + "newVersion": newVersion, + }.toString() + ]); return false; } } @@ -128,12 +134,15 @@ bool serverVersionIsAhead({ } } } catch (e) { - Sentry.captureException(e, hint: Hint.withMap({ - "fn": "serverVersionIsAhead", - "currentVersion": currentVersion, - "referenceVersion": referenceVersion, - "referenceVersionBeta": referenceVersionBeta ?? "" - })); + Sentry.captureException(e); + Sentry.captureMessage("serverVersionIsAhead error", params: [ + { + "fn": "serverVersionIsAhead", + "currentVersion": currentVersion, + "referenceVersion": referenceVersion, + "referenceVersionBeta": referenceVersionBeta ?? "" + }.toString() + ]); return false; } } \ No newline at end of file diff --git a/lib/screens/clients/added_client_tile.dart b/lib/screens/clients/added_client_tile.dart index fcf2ac8..5827c85 100644 --- a/lib/screens/clients/added_client_tile.dart +++ b/lib/screens/clients/added_client_tile.dart @@ -18,6 +18,7 @@ class AddedClientTile extends StatelessWidget { final void Function(Client) onEdit; final Client? selectedClient; final bool? splitView; + final String serverVersion; const AddedClientTile({ Key? key, @@ -26,12 +27,12 @@ class AddedClientTile extends StatelessWidget { required this.onLongPress, required this.onEdit, this.selectedClient, - required this.splitView + required this.splitView, + required this.serverVersion }) : super(key: key); @override Widget build(BuildContext context) { - final serversProvider = Provider.of(context); final appConfigProvider = Provider.of(context); if (splitView == true) { @@ -138,7 +139,7 @@ class AddedClientTile extends StatelessWidget { Icons.search_rounded, size: 19, color: serverVersionIsAhead( - currentVersion: serversProvider.serverStatus.data!.serverVersion, + currentVersion: serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' ) == true @@ -253,7 +254,7 @@ class AddedClientTile extends StatelessWidget { Icons.search_rounded, size: 19, color: serverVersionIsAhead( - currentVersion: serversProvider.serverStatus.data!.serverVersion, + currentVersion: serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' ) == true diff --git a/lib/screens/clients/added_list.dart b/lib/screens/clients/added_list.dart index f68b026..43f3a44 100644 --- a/lib/screens/clients/added_list.dart +++ b/lib/screens/clients/added_list.dart @@ -240,6 +240,7 @@ class _AddedListState extends State { onLongPress: openOptionsModal, onEdit: openClientModal, splitView: widget.splitView, + serverVersion: serversProvider.serverStatus.data!.serverVersion, ), noData: SizedBox( width: double.maxFinite, diff --git a/lib/screens/home/home.dart b/lib/screens/home/home.dart index 20eff68..9cd9411 100644 --- a/lib/screens/home/home.dart +++ b/lib/screens/home/home.dart @@ -2,6 +2,7 @@ import 'dart:io'; +import 'package:adguard_home_manager/functions/snackbar.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:provider/provider.dart'; @@ -270,11 +271,10 @@ class _HomeState extends State { } else { appConfigProvider.addLog(result['log']); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(AppLocalizations.of(context)!.serverStatusNotRefreshed), - backgroundColor: Colors.red, - ) + showSnacbkar( + appConfigProvider: appConfigProvider, + label: AppLocalizations.of(context)!.serverStatusNotRefreshed, + color: Colors.red ); } }, diff --git a/lib/screens/home/management_modal.dart b/lib/screens/home/management_modal.dart index 15eac57..46f94e5 100644 --- a/lib/screens/home/management_modal.dart +++ b/lib/screens/home/management_modal.dart @@ -135,7 +135,7 @@ class _ManagementModalState extends State with SingleTickerProv ); if (result != null) { if (result != false) { - appConfigProvider.addLog(result['log']); + appConfigProvider.addLog(result); } ScaffoldMessenger.of(context).showSnackBar( SnackBar( diff --git a/lib/screens/logs/log_details_screen.dart b/lib/screens/logs/log_details_screen.dart index 5ee50b7..8662b8d 100644 --- a/lib/screens/logs/log_details_screen.dart +++ b/lib/screens/logs/log_details_screen.dart @@ -297,7 +297,7 @@ class LogDetailsScreen extends StatelessWidget { appBar: AppBar( title: Text(AppLocalizations.of(context)!.logDetails), actions: [ - IconButton( + if (serversProvider.filteringStatus != null) IconButton( onPressed: () => blockUnblock(log, getFilteredStatus(context, appConfigProvider, log.reason, true)['filtered'] == true ? 'unblock' : 'block'), icon: Icon( getFilteredStatus(context, appConfigProvider, log.reason, true)['filtered'] == true diff --git a/lib/screens/logs/log_tile.dart b/lib/screens/logs/log_tile.dart index a3c25f9..fbdee24 100644 --- a/lib/screens/logs/log_tile.dart +++ b/lib/screens/logs/log_tile.dart @@ -175,7 +175,7 @@ class LogTile extends StatelessWidget { ) ], ), - if (appConfigProvider.showNameTimeLogs == true && log.clientInfo!.name != '') ...[ + if (appConfigProvider.showNameTimeLogs == true && log.clientInfo != null && log.clientInfo!.name != '') ...[ const SizedBox(height: 10), Row( children: [ @@ -350,7 +350,7 @@ class LogTile extends StatelessWidget { ) ], ), - if (appConfigProvider.showNameTimeLogs == true && log.clientInfo!.name != '') ...[ + if (appConfigProvider.showNameTimeLogs == true && log.clientInfo != null && log.clientInfo!.name != '') ...[ const SizedBox(height: 10), Row( children: [ diff --git a/lib/screens/logs/logs.dart b/lib/screens/logs/logs.dart index bcdb50b..74a7869 100644 --- a/lib/screens/logs/logs.dart +++ b/lib/screens/logs/logs.dart @@ -439,6 +439,7 @@ class _LogsWidgetState extends State { onConfirm: updateConfig, onClear: clearQueries, dialog: true, + serverVersion: serversProvider.serverStatus.data!.serverVersion, ), barrierDismissible: false ) @@ -450,6 +451,7 @@ class _LogsWidgetState extends State { onConfirm: updateConfig, onClear: clearQueries, dialog: false, + serverVersion: serversProvider.serverStatus.data!.serverVersion, ), backgroundColor: Colors.transparent, isScrollControlled: true diff --git a/lib/screens/logs/logs_config_modal.dart b/lib/screens/logs/logs_config_modal.dart index a540559..26ef299 100644 --- a/lib/screens/logs/logs_config_modal.dart +++ b/lib/screens/logs/logs_config_modal.dart @@ -13,12 +13,14 @@ class LogsConfigModal extends StatelessWidget { final void Function(Map) onConfirm; final void Function() onClear; final bool dialog; + final String serverVersion; const LogsConfigModal({ Key? key, required this.onConfirm, required this.onClear, - required this.dialog + required this.dialog, + required this.serverVersion }) : super(key: key); @override @@ -33,6 +35,7 @@ class LogsConfigModal extends StatelessWidget { onConfirm: onConfirm, onClear: onClear, dialog: dialog, + serverVersion: serverVersion, ); } } @@ -44,6 +47,7 @@ class LogsConfigModalWidget extends StatefulWidget { final void Function(Map) onConfirm; final void Function() onClear; final bool dialog; + final String serverVersion; const LogsConfigModalWidget({ Key? key, @@ -52,7 +56,8 @@ class LogsConfigModalWidget extends StatefulWidget { required this.context, required this.onConfirm, required this.onClear, - required this.dialog + required this.dialog, + required this.serverVersion }) : super(key: key); @override @@ -70,7 +75,7 @@ class _LogsConfigModalWidgetState extends State { void loadData() async { final result = serverVersionIsAhead( - currentVersion: widget.serversProvider.serverStatus.data!.serverVersion, + currentVersion: widget.serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' ) == true @@ -95,7 +100,7 @@ class _LogsConfigModalWidgetState extends State { @override void initState() { retentionItems = serverVersionIsAhead( - currentVersion: widget.serversProvider.serverStatus.data!.serverVersion, + currentVersion: widget.serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' ) == true ? [ diff --git a/lib/screens/settings/dns/upstream_dns.dart b/lib/screens/settings/dns/upstream_dns.dart index 89ebe58..9ce5962 100644 --- a/lib/screens/settings/dns/upstream_dns.dart +++ b/lib/screens/settings/dns/upstream_dns.dart @@ -51,7 +51,7 @@ class _UpstreamDnsScreenState extends State { @override void initState() { for (var item in widget.serversProvider.dnsInfo.data!.upstreamDns) { - if (item[0] == '#') { + if (item == '#') { dnsServers.add({ 'comment': item }); diff --git a/lib/screens/top_items/top_items.dart b/lib/screens/top_items/top_items.dart index 8f7fd9e..d8608a9 100644 --- a/lib/screens/top_items/top_items.dart +++ b/lib/screens/top_items/top_items.dart @@ -137,11 +137,10 @@ class _TopItemsScreenState extends State { } else { appConfigProvider.addLog(result['log']); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(AppLocalizations.of(context)!.serverStatusNotRefreshed), - backgroundColor: Colors.red, - ) + showSnacbkar( + appConfigProvider: appConfigProvider, + label: AppLocalizations.of(context)!.serverStatusNotRefreshed, + color: Colors.red ); } }, diff --git a/lib/services/http_requests.dart b/lib/services/http_requests.dart index 041368e..4e2358b 100644 --- a/lib/services/http_requests.dart +++ b/lib/services/http_requests.dart @@ -865,7 +865,9 @@ Future getFiltering({ 'result': 'success', 'data': FilteringData.fromJson({ ...jsonDecode(result[0]['body']), - "blocked_services": jsonDecode(result[1]['body']), + "blocked_services": result[1]['body'] != null + ? jsonDecode(result[1]['body']) + : [] }) }; } diff --git a/lib/widgets/add_server_modal.dart b/lib/widgets/add_server_modal.dart index a332c58..b850b7a 100644 --- a/lib/widgets/add_server_modal.dart +++ b/lib/widgets/add_server_modal.dart @@ -239,8 +239,6 @@ class _AddServerModalState extends State { ? await loginHA(serverObj) : await login(serverObj); - setState(() => isConnecting = false); - if (result['result'] == 'success') { if (serverObj.user != null && serverObj.password != null) { serverObj.authToken = encodeBase64UserPass(serverObj.user!, serverObj.password!); @@ -260,6 +258,7 @@ class _AddServerModalState extends State { Navigator.pop(context); } else { + setState(() => isConnecting = false); appConfigProvider.addLog( AppLog( type: 'save_connection_db', @@ -276,6 +275,7 @@ class _AddServerModalState extends State { } } else if (result['result'] == 'invalid_username_password') { + setState(() => isConnecting = false); appConfigProvider.addLog(result['log']); ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -285,6 +285,7 @@ class _AddServerModalState extends State { ); } else if (result['result'] == 'many_attempts') { + setState(() => isConnecting = false); appConfigProvider.addLog(result['log']); ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -294,6 +295,7 @@ class _AddServerModalState extends State { ); } else if (result['result'] == 'no_connection') { + setState(() => isConnecting = false); appConfigProvider.addLog(result['log']); ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -303,6 +305,7 @@ class _AddServerModalState extends State { ); } else if (result['result'] == 'ssl_error') { + setState(() => isConnecting = false); appConfigProvider.addLog(result['log']); ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -312,6 +315,7 @@ class _AddServerModalState extends State { ); } else if (result['result'] == 'server_error') { + setState(() => isConnecting = false); appConfigProvider.addLog(result['log']); ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -321,6 +325,7 @@ class _AddServerModalState extends State { ); } else { + setState(() => isConnecting = false); appConfigProvider.addLog(result['log']); ScaffoldMessenger.of(context).showSnackBar( SnackBar(