Adapted added clients new version

This commit is contained in:
Juan Gilsanz Polo 2023-04-15 01:22:44 +02:00
parent 415194d7a5
commit f54770dbba
17 changed files with 343 additions and 94 deletions

View file

@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:adguard_home_manager/constants/enums.dart'; import 'package:adguard_home_manager/constants/enums.dart';
import 'package:adguard_home_manager/models/clients_allowed_blocked.dart'; import 'package:adguard_home_manager/models/clients_allowed_blocked.dart';
import 'package:adguard_home_manager/models/safe_search.dart';
class Clients { class Clients {
LoadStatus loadStatus; LoadStatus loadStatus;
@ -100,9 +101,10 @@ class Client {
final bool filteringEnabled; final bool filteringEnabled;
final bool parentalEnabled; final bool parentalEnabled;
final bool safebrowsingEnabled; final bool safebrowsingEnabled;
final bool safesearchEnabled; final bool? safesearchEnabled;
final bool useGlobalBlockedServices; final bool useGlobalBlockedServices;
final bool useGlobalSettings; final bool useGlobalSettings;
final SafeSearch? safeSearch;
Client({ Client({
required this.name, required this.name,
@ -116,6 +118,7 @@ class Client {
required this.safesearchEnabled, required this.safesearchEnabled,
required this.useGlobalBlockedServices, required this.useGlobalBlockedServices,
required this.useGlobalSettings, required this.useGlobalSettings,
required this.safeSearch,
}); });
factory Client.fromJson(Map<String, dynamic> json) => Client( factory Client.fromJson(Map<String, dynamic> json) => Client(
@ -130,6 +133,9 @@ class Client {
safesearchEnabled: json["safesearch_enabled"], safesearchEnabled: json["safesearch_enabled"],
useGlobalBlockedServices: json["use_global_blocked_services"], useGlobalBlockedServices: json["use_global_blocked_services"],
useGlobalSettings: json["use_global_settings"], useGlobalSettings: json["use_global_settings"],
safeSearch: json["safe_search"] != null
? SafeSearch.fromJson(json["safe_search"])
: null
); );
Map<String, dynamic> toJson() => { Map<String, dynamic> toJson() => {
@ -142,6 +148,7 @@ class Client {
"parental_enabled": parentalEnabled, "parental_enabled": parentalEnabled,
"safebrowsing_enabled": safebrowsingEnabled, "safebrowsing_enabled": safebrowsingEnabled,
"safesearch_enabled": safesearchEnabled, "safesearch_enabled": safesearchEnabled,
"safe_search": safeSearch,
"use_global_blocked_services": useGlobalBlockedServices, "use_global_blocked_services": useGlobalBlockedServices,
"use_global_settings": useGlobalSettings, "use_global_settings": useGlobalSettings,
}; };

View file

@ -1,25 +1,13 @@
import 'package:adguard_home_manager/constants/enums.dart';
class SafeSearch { class SafeSearch {
LoadStatus loadStatus = LoadStatus.loading; bool enabled = false;
SafeSearchData? data; bool bing = false;
bool duckduckgo = false;
bool google = false;
bool pixabay = false;
bool yandex = false;
bool youtube = false;
SafeSearch({ SafeSearch({
required this.loadStatus,
this.data
});
}
class SafeSearchData {
final bool enabled;
final bool bing;
final bool duckduckgo;
final bool google;
final bool pixabay;
final bool yandex;
final bool youtube;
SafeSearchData({
required this.enabled, required this.enabled,
required this.bing, required this.bing,
required this.duckduckgo, required this.duckduckgo,
@ -29,7 +17,7 @@ class SafeSearchData {
required this.youtube, required this.youtube,
}); });
factory SafeSearchData.fromJson(Map<String, dynamic> json) => SafeSearchData( factory SafeSearch.fromJson(Map<String, dynamic> json) => SafeSearch(
enabled: json["enabled"], enabled: json["enabled"],
bing: json["bing"], bing: json["bing"],
duckduckgo: json["duckduckgo"], duckduckgo: json["duckduckgo"],

View file

@ -16,6 +16,7 @@ import 'package:adguard_home_manager/functions/snackbar.dart';
import 'package:adguard_home_manager/constants/enums.dart'; import 'package:adguard_home_manager/constants/enums.dart';
import 'package:adguard_home_manager/classes/process_modal.dart'; import 'package:adguard_home_manager/classes/process_modal.dart';
import 'package:adguard_home_manager/services/http_requests.dart'; import 'package:adguard_home_manager/services/http_requests.dart';
import 'package:adguard_home_manager/functions/compare_versions.dart';
import 'package:adguard_home_manager/models/clients.dart'; import 'package:adguard_home_manager/models/clients.dart';
import 'package:adguard_home_manager/providers/app_config_provider.dart'; import 'package:adguard_home_manager/providers/app_config_provider.dart';
import 'package:adguard_home_manager/providers/servers_provider.dart'; import 'package:adguard_home_manager/providers/servers_provider.dart';
@ -146,6 +147,7 @@ class _AddedListState extends State<AddedList> {
fullscreenDialog: true, fullscreenDialog: true,
builder: (BuildContext context) => ClientScreen( builder: (BuildContext context) => ClientScreen(
onConfirm: confirmEditClient, onConfirm: confirmEditClient,
serverVersion: serversProvider.serverStatus.data!.serverVersion,
onDelete: deleteClient, onDelete: deleteClient,
client: client, client: client,
) )
@ -260,13 +262,25 @@ class _AddedListState extends State<AddedList> {
Icon( Icon(
Icons.search_rounded, Icons.search_rounded,
size: 19, size: 19,
color: widget.data[index].safesearchEnabled == true color: versionIsGreater(
? appConfigProvider.useThemeColorForStatus == true currentVersion: serversProvider.serverStatus.data!.serverVersion,
? Theme.of(context).colorScheme.primary referenceVersion: 'v0.107.28',
: Colors.green referenceVersionBeta: 'v0.108.0-b.33'
: appConfigProvider.useThemeColorForStatus == true ) == true
? Colors.grey ? widget.data[index].safeSearch!.enabled == true
: Colors.red, ? appConfigProvider.useThemeColorForStatus == true
? Theme.of(context).colorScheme.primary
: Colors.green
: appConfigProvider.useThemeColorForStatus == true
? Colors.grey
: Colors.red
: widget.data[index].safesearchEnabled == true
? appConfigProvider.useThemeColorForStatus == true
? Theme.of(context).colorScheme.primary
: Colors.green
: appConfigProvider.useThemeColorForStatus == true
? Colors.grey
: Colors.red,
) )
], ],
) )

View file

@ -4,20 +4,26 @@ import 'package:uuid/uuid.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/screens/clients/remove_client_modal.dart'; import 'package:adguard_home_manager/screens/clients/remove_client_modal.dart';
import 'package:adguard_home_manager/screens/clients/safe_search_modal.dart';
import 'package:adguard_home_manager/screens/clients/services_modal.dart'; import 'package:adguard_home_manager/screens/clients/services_modal.dart';
import 'package:adguard_home_manager/screens/clients/tags_modal.dart'; import 'package:adguard_home_manager/screens/clients/tags_modal.dart';
import 'package:adguard_home_manager/widgets/custom_list_tile.dart';
import 'package:adguard_home_manager/functions/compare_versions.dart';
import 'package:adguard_home_manager/models/safe_search.dart';
import 'package:adguard_home_manager/providers/servers_provider.dart'; import 'package:adguard_home_manager/providers/servers_provider.dart';
import 'package:adguard_home_manager/models/clients.dart'; import 'package:adguard_home_manager/models/clients.dart';
class ClientScreen extends StatefulWidget { class ClientScreen extends StatefulWidget {
final Client? client; final Client? client;
final String serverVersion;
final void Function(Client) onConfirm; final void Function(Client) onConfirm;
final void Function(Client)? onDelete; final void Function(Client)? onDelete;
const ClientScreen({ const ClientScreen({
Key? key, Key? key,
this.client, this.client,
required this.serverVersion,
required this.onConfirm, required this.onConfirm,
this.onDelete, this.onDelete,
}) : super(key: key); }) : super(key: key);
@ -46,6 +52,15 @@ class _ClientScreenState extends State<ClientScreen> {
bool? enableSafeBrowsing; bool? enableSafeBrowsing;
bool? enableParentalControl; bool? enableParentalControl;
bool? enableSafeSearch; bool? enableSafeSearch;
SafeSearch safeSearch = SafeSearch(
enabled: false,
bing: false,
duckduckgo: false,
google: false,
pixabay: false,
yandex: false,
youtube: false
);
bool useGlobalSettingsServices = true; bool useGlobalSettingsServices = true;
List<String> blockedServices = []; List<String> blockedServices = [];
@ -66,8 +81,16 @@ class _ClientScreenState extends State<ClientScreen> {
} }
} }
bool version = false;
@override @override
void initState() { void initState() {
version = versionIsGreater(
currentVersion: widget.serverVersion,
referenceVersion: 'v0.107.28',
referenceVersionBeta: 'v0.108.0-b.33'
);
if (widget.client != null) { if (widget.client != null) {
editMode = false; editMode = false;
@ -81,7 +104,12 @@ class _ClientScreenState extends State<ClientScreen> {
enableFiltering = widget.client!.filteringEnabled; enableFiltering = widget.client!.filteringEnabled;
enableParentalControl = widget.client!.parentalEnabled; enableParentalControl = widget.client!.parentalEnabled;
enableSafeBrowsing = widget.client!.safebrowsingEnabled; enableSafeBrowsing = widget.client!.safebrowsingEnabled;
enableSafeSearch = widget.client!.safesearchEnabled; if (version == true) {
safeSearch = widget.client!.safeSearch!;
}
else {
enableSafeSearch = widget.client!.safesearchEnabled!;
}
useGlobalSettingsServices = widget.client!.useGlobalBlockedServices; useGlobalSettingsServices = widget.client!.useGlobalBlockedServices;
blockedServices = widget.client!.blockedServices; blockedServices = widget.client!.blockedServices;
upstreamServers = widget.client!.upstreams.map((e) => { upstreamServers = widget.client!.upstreams.map((e) => {
@ -104,7 +132,8 @@ class _ClientScreenState extends State<ClientScreen> {
filteringEnabled: enableFiltering ?? false, filteringEnabled: enableFiltering ?? false,
parentalEnabled: enableParentalControl ?? false, parentalEnabled: enableParentalControl ?? false,
safebrowsingEnabled: enableSafeBrowsing ?? false, safebrowsingEnabled: enableSafeBrowsing ?? false,
safesearchEnabled: enableSafeSearch ?? false, safesearchEnabled: version == true ? enableSafeSearch : null,
safeSearch: version == true ? safeSearch : null,
useGlobalBlockedServices: useGlobalSettingsServices, useGlobalBlockedServices: useGlobalSettingsServices,
blockedServices: blockedServices, blockedServices: blockedServices,
upstreams: List<String>.from(upstreamServers.map((e) => e['controller'].text)), upstreams: List<String>.from(upstreamServers.map((e) => e['controller'].text)),
@ -141,7 +170,7 @@ class _ClientScreenState extends State<ClientScreen> {
enableFiltering = false; enableFiltering = false;
enableSafeBrowsing = false; enableSafeBrowsing = false;
enableParentalControl = false; enableParentalControl = false;
enableSafeSearch = false; safeSearch.enabled = false;
}); });
} }
else if (useGlobalSettingsFiltering == false) { else if (useGlobalSettingsFiltering == false) {
@ -151,7 +180,7 @@ class _ClientScreenState extends State<ClientScreen> {
enableFiltering = null; enableFiltering = null;
enableSafeBrowsing = null; enableSafeBrowsing = null;
enableParentalControl = null; enableParentalControl = null;
enableSafeSearch = null; safeSearch.enabled = false;
}); });
} }
} }
@ -203,6 +232,17 @@ class _ClientScreenState extends State<ClientScreen> {
); );
} }
void openSafeSearchModal() {
showDialog(
context: context,
builder: (context) => SafeSearchModal(
safeSearch: safeSearch,
disabled: !editMode,
onConfirm: (s) => setState(() => safeSearch = s)
)
);
}
Widget settignsTile({ Widget settignsTile({
required String label, required String label,
required bool? value, required bool? value,
@ -233,10 +273,12 @@ class _ClientScreenState extends State<ClientScreen> {
? Switch( ? Switch(
value: value!, value: value!,
onChanged: onChange, onChanged: onChange,
activeColor: Theme.of(context).colorScheme.primary,
) )
: Padding( : Padding(
padding: const EdgeInsets.symmetric(vertical: 14), padding: const EdgeInsets.symmetric(
vertical: 14,
horizontal: 12
),
child: Text( child: Text(
"Global", "Global",
style: TextStyle( style: TextStyle(
@ -461,7 +503,6 @@ class _ClientScreenState extends State<ClientScreen> {
onChanged: editMode == true onChanged: editMode == true
? (value) => enableDisableGlobalSettingsFiltering() ? (value) => enableDisableGlobalSettingsFiltering()
: null, : null,
activeColor: Theme.of(context).colorScheme.primary,
) )
], ],
), ),
@ -491,7 +532,34 @@ class _ClientScreenState extends State<ClientScreen> {
? (value) => setState(() => enableParentalControl = value) ? (value) => setState(() => enableParentalControl = value)
: null : null
), ),
settignsTile( if (
versionIsGreater(
currentVersion: serversProvider.serverStatus.data!.serverVersion,
referenceVersion: 'v0.107.28',
referenceVersionBeta: 'v0.108.0-b.33'
) == true
) CustomListTile(
title: AppLocalizations.of(context)!.safeSearch,
padding: const EdgeInsets.symmetric(
horizontal: 42,
vertical: 16
),
trailing: Padding(
padding: const EdgeInsets.only(right: 16),
child: Icon(
Icons.chevron_right_rounded,
color: Theme.of(context).colorScheme.onSurfaceVariant,
),
),
onTap: openSafeSearchModal,
),
if (
versionIsGreater(
currentVersion: serversProvider.serverStatus.data!.serverVersion,
referenceVersion: 'v0.107.28',
referenceVersionBeta: 'v0.108.0-b.33'
) == false
) settignsTile(
label: AppLocalizations.of(context)!.enableSafeSearch, label: AppLocalizations.of(context)!.enableSafeSearch,
value: enableSafeSearch, value: enableSafeSearch,
onChange: editMode == true onChange: editMode == true
@ -529,7 +597,6 @@ class _ClientScreenState extends State<ClientScreen> {
onChanged: editMode == true onChanged: editMode == true
? (value) => updateServicesGlobalSettings(value) ? (value) => updateServicesGlobalSettings(value)
: null, : null,
activeColor: Theme.of(context).colorScheme.primary,
) )
], ],
), ),

View file

@ -7,6 +7,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/screens/clients/client_screen.dart'; import 'package:adguard_home_manager/screens/clients/client_screen.dart';
import 'package:adguard_home_manager/functions/snackbar.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/models/clients.dart';
import 'package:adguard_home_manager/services/http_requests.dart'; import 'package:adguard_home_manager/services/http_requests.dart';
import 'package:adguard_home_manager/classes/process_modal.dart'; import 'package:adguard_home_manager/classes/process_modal.dart';
@ -25,7 +26,16 @@ class ClientsFab extends StatelessWidget {
ProcessModal processModal = ProcessModal(context: context); ProcessModal processModal = ProcessModal(context: context);
processModal.open(AppLocalizations.of(context)!.addingClient); processModal.open(AppLocalizations.of(context)!.addingClient);
final result = await postAddClient(server: serversProvider.selectedServer!, data: client.toJson()); final result = await postAddClient(
server: serversProvider.selectedServer!,
data: versionIsGreater(
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')
);
processModal.close(); processModal.close();
@ -58,6 +68,7 @@ class ClientsFab extends StatelessWidget {
fullscreenDialog: true, fullscreenDialog: true,
builder: (BuildContext context) => ClientScreen( builder: (BuildContext context) => ClientScreen(
onConfirm: confirmAddClient, onConfirm: confirmAddClient,
serverVersion: serversProvider.serverStatus.data!.serverVersion,
) )
)); ));
} }

View file

@ -0,0 +1,196 @@
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/widgets/custom_checkbox_list_tile.dart';
import 'package:adguard_home_manager/models/safe_search.dart';
class SafeSearchModal extends StatefulWidget {
final SafeSearch safeSearch;
final bool disabled;
final void Function(SafeSearch) onConfirm;
const SafeSearchModal({
Key? key,
required this.safeSearch,
required this.disabled,
required this.onConfirm
}) : super(key: key);
@override
State<SafeSearchModal> createState() => _SafeSearchModalState();
}
class _SafeSearchModalState extends State<SafeSearchModal> {
bool generalEnabled = false;
bool bingEnabled = false;
bool duckduckgoEnabled = false;
bool googleEnabled = false;
bool pixabayEnabled = false;
bool yandexEnabled = false;
bool youtubeEnabled = false;
@override
void initState() {
generalEnabled = widget.safeSearch.enabled;
bingEnabled = widget.safeSearch.bing;
duckduckgoEnabled = widget.safeSearch.duckduckgo;
googleEnabled = widget.safeSearch.google;
pixabayEnabled = widget.safeSearch.pixabay;
yandexEnabled = widget.safeSearch.yandex;
youtubeEnabled = widget.safeSearch.youtube;
super.initState();
}
@override
Widget build(BuildContext context) {
return AlertDialog(
contentPadding: const EdgeInsets.symmetric(horizontal: 0, vertical: 16),
title: Column(
children: [
Icon(
Icons.search_rounded,
size: 24,
color: Theme.of(context).listTileTheme.iconColor
),
const SizedBox(height: 16),
Text(
AppLocalizations.of(context)!.safeSearch,
textAlign: TextAlign.center,
style: TextStyle(
color: Theme.of(context).colorScheme.onSurface
),
)
],
),
content: Wrap(
children: [
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Material(
color: Theme.of(context).colorScheme.primary.withOpacity(0.1),
borderRadius: BorderRadius.circular(28),
child: InkWell(
onTap: widget.disabled == true
? null
: () => setState(() => generalEnabled = !generalEnabled),
borderRadius: BorderRadius.circular(28),
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 20,
vertical: 5
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
AppLocalizations.of(context)!.enable,
style: TextStyle(
fontSize: 16,
color: widget.disabled == true
? Colors.grey
: Theme.of(context).colorScheme.onSurface
),
),
Switch(
value: generalEnabled,
onChanged: widget.disabled == true
? null
: (value) => setState(() => generalEnabled = value),
)
],
),
),
),
),
),
const SizedBox(height: 4, width: double.maxFinite),
CustomCheckboxListTile(
value: bingEnabled,
onChanged: (value) => setState(() => bingEnabled = value),
title: "Bing",
disabled: widget.disabled || !generalEnabled,
padding: const EdgeInsets.symmetric(
horizontal: 36,
vertical: 4
),
),
CustomCheckboxListTile(
value: duckduckgoEnabled,
onChanged: (value) => setState(() => duckduckgoEnabled = value),
title: "DuckDuckGo",
disabled: widget.disabled || !generalEnabled,
padding: const EdgeInsets.symmetric(
horizontal: 36,
vertical: 4
),
),
CustomCheckboxListTile(
value: googleEnabled,
onChanged: (value) => setState(() => googleEnabled = value),
title: "Google",
disabled: widget.disabled || !generalEnabled,
padding: const EdgeInsets.symmetric(
horizontal: 36,
vertical: 4
),
),
CustomCheckboxListTile(
value: pixabayEnabled,
onChanged: (value) => setState(() => pixabayEnabled = value),
title: "Pixabay",
disabled: widget.disabled || !generalEnabled,
padding: const EdgeInsets.symmetric(
horizontal: 36,
vertical: 4
),
),
CustomCheckboxListTile(
value: yandexEnabled,
onChanged: (value) => setState(() => yandexEnabled = value),
title: "Yandex",
disabled: widget.disabled || !generalEnabled,
padding: const EdgeInsets.symmetric(
horizontal: 36,
vertical: 4
),
),
CustomCheckboxListTile(
value: youtubeEnabled,
onChanged: (value) => setState(() => youtubeEnabled = value),
title: "YouTube",
disabled: widget.disabled || !generalEnabled,
padding: const EdgeInsets.symmetric(
horizontal: 36,
vertical: 4
),
),
],
),
actions: [
TextButton(
onPressed: () => Navigator.pop(context),
child: Text(AppLocalizations.of(context)!.cancel)
),
TextButton(
onPressed: widget.disabled == false ? () {
widget.onConfirm(
SafeSearch(
enabled: generalEnabled,
bing: bingEnabled,
duckduckgo: duckduckgoEnabled,
google: googleEnabled,
pixabay: pixabayEnabled,
yandex: yandexEnabled,
youtube: youtubeEnabled
)
);
Navigator.pop(context);
} : null,
child: Text(AppLocalizations.of(context)!.confirm)
),
],
);
}
}

View file

@ -13,6 +13,7 @@ import 'package:adguard_home_manager/widgets/custom_list_tile.dart';
import 'package:adguard_home_manager/services/http_requests.dart'; import 'package:adguard_home_manager/services/http_requests.dart';
import 'package:adguard_home_manager/classes/process_modal.dart'; import 'package:adguard_home_manager/classes/process_modal.dart';
import 'package:adguard_home_manager/functions/compare_versions.dart';
import 'package:adguard_home_manager/functions/snackbar.dart'; import 'package:adguard_home_manager/functions/snackbar.dart';
import 'package:adguard_home_manager/providers/app_config_provider.dart'; import 'package:adguard_home_manager/providers/app_config_provider.dart';
import 'package:adguard_home_manager/models/clients.dart'; import 'package:adguard_home_manager/models/clients.dart';
@ -188,6 +189,7 @@ class _SearchClientsWidgetState extends State<SearchClientsWidget> {
onConfirm: confirmEditClient, onConfirm: confirmEditClient,
onDelete: deleteClient, onDelete: deleteClient,
client: client, client: client,
serverVersion: serversProvider.serverStatus.data!.serverVersion,
) )
)); ));
} }
@ -337,13 +339,25 @@ class _SearchClientsWidgetState extends State<SearchClientsWidget> {
Icon( Icon(
Icons.search_rounded, Icons.search_rounded,
size: 19, size: 19,
color: clientsScreen[index].safesearchEnabled == true color: versionIsGreater(
? appConfigProvider.useThemeColorForStatus == true currentVersion: serversProvider.serverStatus.data!.serverVersion,
? Theme.of(context).colorScheme.primary referenceVersion: 'v0.107.28',
: Colors.green referenceVersionBeta: 'v0.108.0-b.33'
: appConfigProvider.useThemeColorForStatus == true ) == true
? Colors.grey ? clientsScreen[index].safeSearch!.enabled == true
: Colors.red, ? appConfigProvider.useThemeColorForStatus == true
? Theme.of(context).colorScheme.primary
: Colors.green
: appConfigProvider.useThemeColorForStatus == true
? Colors.grey
: Colors.red
: clientsScreen[index].safesearchEnabled == true
? appConfigProvider.useThemeColorForStatus == true
? Theme.of(context).colorScheme.primary
: Colors.green
: appConfigProvider.useThemeColorForStatus == true
? Colors.grey
: Colors.red,
) )
], ],
) )

View file

@ -200,7 +200,6 @@ class _AddCustomRuleState extends State<AddCustomRule> {
Switch( Switch(
value: addImportant, value: addImportant,
onChanged: (value) => setState(() => addImportant = value), onChanged: (value) => setState(() => addImportant = value),
activeColor: Theme.of(context).colorScheme.primary,
) )
], ],
), ),

View file

@ -197,7 +197,6 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
filter: legacyMode == true ? 'general_legacy' : 'general' filter: legacyMode == true ? 'general_legacy' : 'general'
); );
} : null, } : null,
activeColor: Theme.of(context).colorScheme.primary,
) )
] ]
); );
@ -357,7 +356,6 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
onChanged: disabled == false onChanged: disabled == false
? onChange ? onChange
: null, : null,
activeColor: Theme.of(context).colorScheme.primary,
) )
], ],
), ),

View file

@ -202,7 +202,6 @@ class _LogsConfigModalWidgetState extends State<LogsConfigModalWidget> {
Switch( Switch(
value: generalSwitch, value: generalSwitch,
onChanged: (value) => setState(() => generalSwitch = value), onChanged: (value) => setState(() => generalSwitch = value),
activeColor: Theme.of(context).colorScheme.primary,
) )
], ],
), ),
@ -233,7 +232,6 @@ class _LogsConfigModalWidgetState extends State<LogsConfigModalWidget> {
Switch( Switch(
value: anonymizeClientIp, value: anonymizeClientIp,
onChanged: (value) => setState(() => anonymizeClientIp = value), onChanged: (value) => setState(() => anonymizeClientIp = value),
activeColor: Theme.of(context).colorScheme.primary,
) )
], ],
), ),

View file

@ -50,7 +50,6 @@ class AdvancedSettings extends StatelessWidget {
trailing: Switch( trailing: Switch(
value: appConfigProvider.overrideSslCheck, value: appConfigProvider.overrideSslCheck,
onChanged: updateSslCheck, onChanged: updateSslCheck,
activeColor: Theme.of(context).colorScheme.primary,
), ),
onTap: () => updateSslCheck(!appConfigProvider.overrideSslCheck), onTap: () => updateSslCheck(!appConfigProvider.overrideSslCheck),
padding: const EdgeInsets.only( padding: const EdgeInsets.only(

View file

@ -449,7 +449,6 @@ class _DhcpWidgetState extends State<DhcpWidget> {
onChanged: selectedInterface != null onChanged: selectedInterface != null
? (value) => setState(() => enabled = value) ? (value) => setState(() => enabled = value)
: null, : null,
activeColor: Theme.of(context).colorScheme.primary,
), ),
], ],
), ),

View file

@ -58,7 +58,6 @@ class EncryptionMasterSwitch extends StatelessWidget {
Switch( Switch(
value: value, value: value,
onChanged: (value) => onChange(value), onChanged: (value) => onChange(value),
activeColor: Theme.of(context).colorScheme.primary,
), ),
], ],
), ),

View file

@ -69,7 +69,6 @@ class GeneralSettings extends StatelessWidget {
trailing: Switch( trailing: Switch(
value: appConfigProvider.hideZeroValues, value: appConfigProvider.hideZeroValues,
onChanged: updateHideZeroValues, onChanged: updateHideZeroValues,
activeColor: Theme.of(context).colorScheme.primary,
), ),
onTap: () => updateHideZeroValues(!appConfigProvider.hideZeroValues), onTap: () => updateHideZeroValues(!appConfigProvider.hideZeroValues),
padding: const EdgeInsets.only( padding: const EdgeInsets.only(
@ -86,7 +85,6 @@ class GeneralSettings extends StatelessWidget {
trailing: Switch( trailing: Switch(
value: appConfigProvider.showNameTimeLogs, value: appConfigProvider.showNameTimeLogs,
onChanged: updateShowNameTimeLogs, onChanged: updateShowNameTimeLogs,
activeColor: Theme.of(context).colorScheme.primary,
), ),
onTap: () => updateShowNameTimeLogs(!appConfigProvider.showNameTimeLogs), onTap: () => updateShowNameTimeLogs(!appConfigProvider.showNameTimeLogs),
padding: const EdgeInsets.only( padding: const EdgeInsets.only(

View file

@ -4,11 +4,10 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/widgets/custom_switch_list_tile.dart'; import 'package:adguard_home_manager/widgets/custom_checkbox_list_tile.dart';
import 'package:adguard_home_manager/classes/process_modal.dart'; import 'package:adguard_home_manager/classes/process_modal.dart';
import 'package:adguard_home_manager/functions/snackbar.dart'; import 'package:adguard_home_manager/functions/snackbar.dart';
import 'package:adguard_home_manager/widgets/custom_checkbox_list_tile.dart';
import 'package:adguard_home_manager/models/server_status.dart'; import 'package:adguard_home_manager/models/server_status.dart';
import 'package:adguard_home_manager/services/http_requests.dart'; import 'package:adguard_home_manager/services/http_requests.dart';
import 'package:adguard_home_manager/providers/app_config_provider.dart'; import 'package:adguard_home_manager/providers/app_config_provider.dart';

View file

@ -2255,41 +2255,6 @@ Future requestUpdateServer({
} }
} }
Future getSafeSearchSettings({
required Server server,
}) async {
final result = await apiRequest(
urlPath: '/safesearch/status',
method: 'get',
server: server,
type: 'safesearch_settings'
);
if (result['hasResponse'] == true) {
if (result['statusCode'] == 200) {
return {
'result': 'success',
'data': SafeSearchData.fromJson(jsonDecode(result['body']))
};
}
else {
return {
'result': 'error',
'log': AppLog(
type: 'safesearch_settings',
dateTime: DateTime.now(),
message: 'error_code_not_expected',
statusCode: result['statusCode'].toString(),
resBody: result['body'],
)
};
}
}
else {
return result;
}
}
Future updateSafeSearchSettings({ Future updateSafeSearchSettings({
required Server server, required Server server,
required Map<String, bool> body required Map<String, bool> body

View file

@ -580,7 +580,6 @@ class _AddServerModalState extends State<AddServerModal> {
onChanged: widget.server == null onChanged: widget.server == null
? (value) => setState(() => defaultServer = value) ? (value) => setState(() => defaultServer = value)
: null, : null,
activeColor: Theme.of(context).colorScheme.primary,
) )
], ],
), ),
@ -606,7 +605,6 @@ class _AddServerModalState extends State<AddServerModal> {
Switch( Switch(
value: homeAssistant, value: homeAssistant,
onChanged: (value) => setState(() => homeAssistant = value), onChanged: (value) => setState(() => homeAssistant = value),
activeColor: Theme.of(context).colorScheme.primary,
) )
], ],
), ),