diff --git a/lib/functions/compare_versions.dart b/lib/functions/compare_versions.dart index 5e3a81b..39b78cd 100644 --- a/lib/functions/compare_versions.dart +++ b/lib/functions/compare_versions.dart @@ -46,7 +46,7 @@ bool compareBetaVersions({ } } -bool versionIsGreater({ +bool serverVersionIsAhead({ required String currentVersion, required String referenceVersion, String? referenceVersionBeta @@ -66,16 +66,16 @@ bool versionIsGreater({ if (newSplit[0] == currentSplit[0] && newSplit[1] == currentSplit[1] && newSplit[2] == currentSplit[2] && newBeta == currentBeta) { return true; } - else if (newSplit[0] > currentSplit[0]) { + else if (newSplit[0] < currentSplit[0]) { return true; } - else if (newSplit[1] > currentSplit[1]) { + else if (newSplit[1] < currentSplit[1]) { return true; } - else if (newSplit[2] > currentSplit[2]) { + else if (newSplit[2] < currentSplit[2]) { return true; } - else if (newBeta > currentBeta) { + else if (newBeta < currentBeta) { return true; } else { @@ -93,13 +93,13 @@ bool versionIsGreater({ if (newSplit[0] == currentSplit[0] && newSplit[1] == currentSplit[1] && newSplit[2] == currentSplit[2]) { return true; } - else if (newSplit[0] > currentSplit[0]) { + else if (newSplit[0] < currentSplit[0]) { return true; } - else if (newSplit[1] > currentSplit[1]) { + else if (newSplit[1] < currentSplit[1]) { return true; } - else if (newSplit[2] > currentSplit[2]) { + else if (newSplit[2] < currentSplit[2]) { return true; } else { diff --git a/lib/functions/maps_fns.dart b/lib/functions/maps_fns.dart new file mode 100644 index 0000000..974e5f0 --- /dev/null +++ b/lib/functions/maps_fns.dart @@ -0,0 +1,5 @@ +Map removePropFromMap(Map o, String prop) { + Map obj = {...o}; + obj.remove(prop); + return o; +} \ No newline at end of file diff --git a/lib/models/server_status.dart b/lib/models/server_status.dart index 180ae1f..3d68399 100644 --- a/lib/models/server_status.dart +++ b/lib/models/server_status.dart @@ -24,12 +24,12 @@ class ServerStatusData { bool safeBrowsingEnabled; bool parentalControlEnabled; final String serverVersion; - bool safeSeachBing; - bool safeSearchGoogle; - bool safeSearchDuckduckgo; - bool safeSearchPixabay; - bool safeSearchYandex; - bool safeSearchYoutube; + bool? safeSeachBing; + bool? safeSearchGoogle; + bool? safeSearchDuckduckgo; + bool? safeSearchPixabay; + bool? safeSearchYandex; + bool? safeSearchYoutube; ServerStatusData({ required this.stats, @@ -56,9 +56,11 @@ class ServerStatusData { clients: json["clients"] != null ? List.from(json["clients"].map((x) => Client.fromJson(x))) : [], generalEnabled: json['status']['protection_enabled'], timeGeneralDisabled: json['status']['protection_disabled_duration'] ?? 0, - disabledUntil: json['status']['protection_disabled_duration'] > 0 - ? generateTimeDeadline(json['status']['protection_disabled_duration']) - : null , + disabledUntil: json['status']['protection_disabled_duration'] != null + ? json['status']['protection_disabled_duration'] > 0 + ? generateTimeDeadline(json['status']['protection_disabled_duration']) + : null + : null, filteringStatus: FilteringStatus.fromJson(json['filtering']), filteringEnabled: json['filtering']['enabled'], safeSearchEnabled: json['safeSearch']['enabled'], diff --git a/lib/providers/servers_provider.dart b/lib/providers/servers_provider.dart index ce20665..f448c74 100644 --- a/lib/providers/servers_provider.dart +++ b/lib/providers/servers_provider.dart @@ -411,7 +411,7 @@ class ServersProvider with ChangeNotifier { _protectionsManagementProcess.add('safeSearch'); notifyListeners(); - final result = versionIsGreater( + final result = serverVersionIsAhead( currentVersion: serverStatus.data!.serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' diff --git a/lib/screens/clients/added_list.dart b/lib/screens/clients/added_list.dart index 0aeb121..dc9c974 100644 --- a/lib/screens/clients/added_list.dart +++ b/lib/screens/clients/added_list.dart @@ -13,6 +13,7 @@ import 'package:adguard_home_manager/screens/clients/options_modal.dart'; import 'package:adguard_home_manager/widgets/tab_content_list.dart'; import 'package:adguard_home_manager/functions/snackbar.dart'; +import 'package:adguard_home_manager/functions/maps_fns.dart'; import 'package:adguard_home_manager/constants/enums.dart'; import 'package:adguard_home_manager/classes/process_modal.dart'; import 'package:adguard_home_manager/services/http_requests.dart'; @@ -74,7 +75,13 @@ class _AddedListState extends State { final result = await postUpdateClient(server: serversProvider.selectedServer!, data: { 'name': client.name, - 'data': client.toJson() + 'data': serverVersionIsAhead( + currentVersion: serversProvider.serverStatus.data!.serverVersion, + referenceVersion: 'v0.107.28', + referenceVersionBeta: 'v0.108.0-b.33' + ) == false + ? removePropFromMap(client.toJson(), 'safesearch_enabled') + : removePropFromMap(client.toJson(), 'safe_search') }); processModal.close(); @@ -262,7 +269,7 @@ class _AddedListState extends State { Icon( Icons.search_rounded, size: 19, - color: versionIsGreater( + color: serverVersionIsAhead( currentVersion: serversProvider.serverStatus.data!.serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' diff --git a/lib/screens/clients/client_screen.dart b/lib/screens/clients/client_screen.dart index 9cd22b4..277970a 100644 --- a/lib/screens/clients/client_screen.dart +++ b/lib/screens/clients/client_screen.dart @@ -85,7 +85,7 @@ class _ClientScreenState extends State { @override void initState() { - version = versionIsGreater( + version = serverVersionIsAhead( currentVersion: widget.serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' @@ -108,7 +108,7 @@ class _ClientScreenState extends State { safeSearch = widget.client!.safeSearch!; } else { - enableSafeSearch = widget.client!.safesearchEnabled!; + enableSafeSearch = widget.client!.safesearchEnabled ?? false; } useGlobalSettingsServices = widget.client!.useGlobalBlockedServices; blockedServices = widget.client!.blockedServices; @@ -132,7 +132,7 @@ class _ClientScreenState extends State { filteringEnabled: enableFiltering ?? false, parentalEnabled: enableParentalControl ?? false, safebrowsingEnabled: enableSafeBrowsing ?? false, - safesearchEnabled: version == true ? enableSafeSearch : null, + safesearchEnabled: version == false ? enableSafeSearch : null, safeSearch: version == true ? safeSearch : null, useGlobalBlockedServices: useGlobalSettingsServices, blockedServices: blockedServices, @@ -170,6 +170,7 @@ class _ClientScreenState extends State { enableFiltering = false; enableSafeBrowsing = false; enableParentalControl = false; + enableSafeSearch = false; safeSearch.enabled = false; }); } @@ -180,6 +181,7 @@ class _ClientScreenState extends State { enableFiltering = null; enableSafeBrowsing = null; enableParentalControl = null; + enableSafeSearch = null; safeSearch.enabled = false; }); } @@ -533,7 +535,7 @@ class _ClientScreenState extends State { : null ), if ( - versionIsGreater( + serverVersionIsAhead( currentVersion: serversProvider.serverStatus.data!.serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' @@ -554,7 +556,7 @@ class _ClientScreenState extends State { onTap: openSafeSearchModal, ), if ( - versionIsGreater( + serverVersionIsAhead( currentVersion: serversProvider.serverStatus.data!.serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' diff --git a/lib/screens/clients/fab.dart b/lib/screens/clients/fab.dart index 2c84151..4eff04e 100644 --- a/lib/screens/clients/fab.dart +++ b/lib/screens/clients/fab.dart @@ -9,6 +9,7 @@ import 'package:adguard_home_manager/screens/clients/client_screen.dart'; import 'package:adguard_home_manager/functions/snackbar.dart'; import 'package:adguard_home_manager/functions/compare_versions.dart'; import 'package:adguard_home_manager/models/clients.dart'; +import 'package:adguard_home_manager/functions/maps_fns.dart'; import 'package:adguard_home_manager/services/http_requests.dart'; import 'package:adguard_home_manager/classes/process_modal.dart'; import 'package:adguard_home_manager/providers/servers_provider.dart'; @@ -28,13 +29,13 @@ class ClientsFab extends StatelessWidget { final result = await postAddClient( server: serversProvider.selectedServer!, - data: versionIsGreater( + data: serverVersionIsAhead( currentVersion: serversProvider.serverStatus.data!.serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' ) == false - ? client.toJson().remove('safesearch_enabled') - : client.toJson().remove('safe_search') + ? removePropFromMap(client.toJson(), 'safesearch_enabled') + : removePropFromMap(client.toJson(), 'safe_search') ); processModal.close(); diff --git a/lib/screens/clients/search_clients.dart b/lib/screens/clients/search_clients.dart index 4ac2a66..32fc0b4 100644 --- a/lib/screens/clients/search_clients.dart +++ b/lib/screens/clients/search_clients.dart @@ -339,7 +339,7 @@ class _SearchClientsWidgetState extends State { Icon( Icons.search_rounded, size: 19, - color: versionIsGreater( + color: serverVersionIsAhead( currentVersion: serversProvider.serverStatus.data!.serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' diff --git a/lib/screens/home/management_modal.dart b/lib/screens/home/management_modal.dart index 83029b8..72908fc 100644 --- a/lib/screens/home/management_modal.dart +++ b/lib/screens/home/management_modal.dart @@ -250,7 +250,7 @@ class _ManagementModalState extends State with SingleTickerProv return Padding( padding: const EdgeInsets.symmetric(horizontal: 24), - child: versionIsGreater( + child: serverVersionIsAhead( currentVersion: serversProvider.serverStatus.data!.serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' diff --git a/lib/screens/logs/logs.dart b/lib/screens/logs/logs.dart index 575becd..5393c04 100644 --- a/lib/screens/logs/logs.dart +++ b/lib/screens/logs/logs.dart @@ -192,7 +192,7 @@ class _LogsWidgetState extends State { ProcessModal processModal = ProcessModal(context: context); processModal.open(AppLocalizations.of(context)!.updatingSettings); - final result = versionIsGreater( + final result = serverVersionIsAhead( currentVersion: widget.serversProvider.serverStatus.data!.serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' diff --git a/lib/screens/logs/logs_config_modal.dart b/lib/screens/logs/logs_config_modal.dart index 3d80a87..9af7335 100644 --- a/lib/screens/logs/logs_config_modal.dart +++ b/lib/screens/logs/logs_config_modal.dart @@ -64,7 +64,7 @@ class _LogsConfigModalWidgetState extends State { int loadStatus = 0; void loadData() async { - final result = versionIsGreater( + final result = serverVersionIsAhead( currentVersion: widget.serversProvider.serverStatus.data!.serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' @@ -89,7 +89,7 @@ class _LogsConfigModalWidgetState extends State { @override void initState() { - retentionItems = versionIsGreater( + retentionItems = serverVersionIsAhead( currentVersion: widget.serversProvider.serverStatus.data!.serverVersion, referenceVersion: 'v0.107.28', referenceVersionBeta: 'v0.108.0-b.33' diff --git a/lib/screens/settings/access_settings/access_settings.dart b/lib/screens/settings/access_settings/access_settings.dart index 5a59e2e..9fc8a86 100644 --- a/lib/screens/settings/access_settings/access_settings.dart +++ b/lib/screens/settings/access_settings/access_settings.dart @@ -72,7 +72,6 @@ class _AccessSettingsWidgetState extends State with Ticker @override Widget build(BuildContext context) { final serversProvider = Provider.of(context); -print(serversProvider.clients.data!.clientsAllowedBlocked!.blockedHosts.length); return Scaffold( body: DefaultTabController( length: 3, diff --git a/lib/screens/settings/safe_search_settings.dart b/lib/screens/settings/safe_search_settings.dart index 02a9c1d..cefd757 100644 --- a/lib/screens/settings/safe_search_settings.dart +++ b/lib/screens/settings/safe_search_settings.dart @@ -81,12 +81,12 @@ class _SafeSearchSettingsScreenWidgetState extends State