mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-04-20 13:59:12 +00:00
Adapted added clients new version
This commit is contained in:
parent
415194d7a5
commit
f54770dbba
17 changed files with 343 additions and 94 deletions
|
@ -2,6 +2,7 @@ import 'dart:convert';
|
|||
|
||||
import 'package:adguard_home_manager/constants/enums.dart';
|
||||
import 'package:adguard_home_manager/models/clients_allowed_blocked.dart';
|
||||
import 'package:adguard_home_manager/models/safe_search.dart';
|
||||
|
||||
class Clients {
|
||||
LoadStatus loadStatus;
|
||||
|
@ -100,9 +101,10 @@ class Client {
|
|||
final bool filteringEnabled;
|
||||
final bool parentalEnabled;
|
||||
final bool safebrowsingEnabled;
|
||||
final bool safesearchEnabled;
|
||||
final bool? safesearchEnabled;
|
||||
final bool useGlobalBlockedServices;
|
||||
final bool useGlobalSettings;
|
||||
final SafeSearch? safeSearch;
|
||||
|
||||
Client({
|
||||
required this.name,
|
||||
|
@ -116,6 +118,7 @@ class Client {
|
|||
required this.safesearchEnabled,
|
||||
required this.useGlobalBlockedServices,
|
||||
required this.useGlobalSettings,
|
||||
required this.safeSearch,
|
||||
});
|
||||
|
||||
factory Client.fromJson(Map<String, dynamic> json) => Client(
|
||||
|
@ -130,6 +133,9 @@ class Client {
|
|||
safesearchEnabled: json["safesearch_enabled"],
|
||||
useGlobalBlockedServices: json["use_global_blocked_services"],
|
||||
useGlobalSettings: json["use_global_settings"],
|
||||
safeSearch: json["safe_search"] != null
|
||||
? SafeSearch.fromJson(json["safe_search"])
|
||||
: null
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
|
@ -142,6 +148,7 @@ class Client {
|
|||
"parental_enabled": parentalEnabled,
|
||||
"safebrowsing_enabled": safebrowsingEnabled,
|
||||
"safesearch_enabled": safesearchEnabled,
|
||||
"safe_search": safeSearch,
|
||||
"use_global_blocked_services": useGlobalBlockedServices,
|
||||
"use_global_settings": useGlobalSettings,
|
||||
};
|
||||
|
|
|
@ -1,25 +1,13 @@
|
|||
import 'package:adguard_home_manager/constants/enums.dart';
|
||||
|
||||
class SafeSearch {
|
||||
LoadStatus loadStatus = LoadStatus.loading;
|
||||
SafeSearchData? data;
|
||||
bool enabled = false;
|
||||
bool bing = false;
|
||||
bool duckduckgo = false;
|
||||
bool google = false;
|
||||
bool pixabay = false;
|
||||
bool yandex = false;
|
||||
bool youtube = false;
|
||||
|
||||
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.bing,
|
||||
required this.duckduckgo,
|
||||
|
@ -29,7 +17,7 @@ class SafeSearchData {
|
|||
required this.youtube,
|
||||
});
|
||||
|
||||
factory SafeSearchData.fromJson(Map<String, dynamic> json) => SafeSearchData(
|
||||
factory SafeSearch.fromJson(Map<String, dynamic> json) => SafeSearch(
|
||||
enabled: json["enabled"],
|
||||
bing: json["bing"],
|
||||
duckduckgo: json["duckduckgo"],
|
||||
|
|
|
@ -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/classes/process_modal.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/providers/app_config_provider.dart';
|
||||
import 'package:adguard_home_manager/providers/servers_provider.dart';
|
||||
|
@ -146,6 +147,7 @@ class _AddedListState extends State<AddedList> {
|
|||
fullscreenDialog: true,
|
||||
builder: (BuildContext context) => ClientScreen(
|
||||
onConfirm: confirmEditClient,
|
||||
serverVersion: serversProvider.serverStatus.data!.serverVersion,
|
||||
onDelete: deleteClient,
|
||||
client: client,
|
||||
)
|
||||
|
@ -260,7 +262,19 @@ class _AddedListState extends State<AddedList> {
|
|||
Icon(
|
||||
Icons.search_rounded,
|
||||
size: 19,
|
||||
color: widget.data[index].safesearchEnabled == true
|
||||
color: versionIsGreater(
|
||||
currentVersion: serversProvider.serverStatus.data!.serverVersion,
|
||||
referenceVersion: 'v0.107.28',
|
||||
referenceVersionBeta: 'v0.108.0-b.33'
|
||||
) == true
|
||||
? widget.data[index].safeSearch!.enabled == true
|
||||
? 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
|
||||
|
|
|
@ -4,20 +4,26 @@ import 'package:uuid/uuid.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/safe_search_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/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/models/clients.dart';
|
||||
|
||||
class ClientScreen extends StatefulWidget {
|
||||
final Client? client;
|
||||
final String serverVersion;
|
||||
final void Function(Client) onConfirm;
|
||||
final void Function(Client)? onDelete;
|
||||
|
||||
const ClientScreen({
|
||||
Key? key,
|
||||
this.client,
|
||||
required this.serverVersion,
|
||||
required this.onConfirm,
|
||||
this.onDelete,
|
||||
}) : super(key: key);
|
||||
|
@ -46,6 +52,15 @@ class _ClientScreenState extends State<ClientScreen> {
|
|||
bool? enableSafeBrowsing;
|
||||
bool? enableParentalControl;
|
||||
bool? enableSafeSearch;
|
||||
SafeSearch safeSearch = SafeSearch(
|
||||
enabled: false,
|
||||
bing: false,
|
||||
duckduckgo: false,
|
||||
google: false,
|
||||
pixabay: false,
|
||||
yandex: false,
|
||||
youtube: false
|
||||
);
|
||||
|
||||
bool useGlobalSettingsServices = true;
|
||||
List<String> blockedServices = [];
|
||||
|
@ -66,8 +81,16 @@ class _ClientScreenState extends State<ClientScreen> {
|
|||
}
|
||||
}
|
||||
|
||||
bool version = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
version = versionIsGreater(
|
||||
currentVersion: widget.serverVersion,
|
||||
referenceVersion: 'v0.107.28',
|
||||
referenceVersionBeta: 'v0.108.0-b.33'
|
||||
);
|
||||
|
||||
if (widget.client != null) {
|
||||
editMode = false;
|
||||
|
||||
|
@ -81,7 +104,12 @@ class _ClientScreenState extends State<ClientScreen> {
|
|||
enableFiltering = widget.client!.filteringEnabled;
|
||||
enableParentalControl = widget.client!.parentalEnabled;
|
||||
enableSafeBrowsing = widget.client!.safebrowsingEnabled;
|
||||
enableSafeSearch = widget.client!.safesearchEnabled;
|
||||
if (version == true) {
|
||||
safeSearch = widget.client!.safeSearch!;
|
||||
}
|
||||
else {
|
||||
enableSafeSearch = widget.client!.safesearchEnabled!;
|
||||
}
|
||||
useGlobalSettingsServices = widget.client!.useGlobalBlockedServices;
|
||||
blockedServices = widget.client!.blockedServices;
|
||||
upstreamServers = widget.client!.upstreams.map((e) => {
|
||||
|
@ -104,7 +132,8 @@ class _ClientScreenState extends State<ClientScreen> {
|
|||
filteringEnabled: enableFiltering ?? false,
|
||||
parentalEnabled: enableParentalControl ?? false,
|
||||
safebrowsingEnabled: enableSafeBrowsing ?? false,
|
||||
safesearchEnabled: enableSafeSearch ?? false,
|
||||
safesearchEnabled: version == true ? enableSafeSearch : null,
|
||||
safeSearch: version == true ? safeSearch : null,
|
||||
useGlobalBlockedServices: useGlobalSettingsServices,
|
||||
blockedServices: blockedServices,
|
||||
upstreams: List<String>.from(upstreamServers.map((e) => e['controller'].text)),
|
||||
|
@ -141,7 +170,7 @@ class _ClientScreenState extends State<ClientScreen> {
|
|||
enableFiltering = false;
|
||||
enableSafeBrowsing = false;
|
||||
enableParentalControl = false;
|
||||
enableSafeSearch = false;
|
||||
safeSearch.enabled = false;
|
||||
});
|
||||
}
|
||||
else if (useGlobalSettingsFiltering == false) {
|
||||
|
@ -151,7 +180,7 @@ class _ClientScreenState extends State<ClientScreen> {
|
|||
enableFiltering = null;
|
||||
enableSafeBrowsing = 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({
|
||||
required String label,
|
||||
required bool? value,
|
||||
|
@ -233,10 +273,12 @@ class _ClientScreenState extends State<ClientScreen> {
|
|||
? Switch(
|
||||
value: value!,
|
||||
onChanged: onChange,
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
)
|
||||
: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 14),
|
||||
padding: const EdgeInsets.symmetric(
|
||||
vertical: 14,
|
||||
horizontal: 12
|
||||
),
|
||||
child: Text(
|
||||
"Global",
|
||||
style: TextStyle(
|
||||
|
@ -461,7 +503,6 @@ class _ClientScreenState extends State<ClientScreen> {
|
|||
onChanged: editMode == true
|
||||
? (value) => enableDisableGlobalSettingsFiltering()
|
||||
: null,
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
)
|
||||
],
|
||||
),
|
||||
|
@ -491,7 +532,34 @@ class _ClientScreenState extends State<ClientScreen> {
|
|||
? (value) => setState(() => enableParentalControl = value)
|
||||
: 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,
|
||||
value: enableSafeSearch,
|
||||
onChange: editMode == true
|
||||
|
@ -529,7 +597,6 @@ class _ClientScreenState extends State<ClientScreen> {
|
|||
onChanged: editMode == true
|
||||
? (value) => updateServicesGlobalSettings(value)
|
||||
: null,
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
)
|
||||
],
|
||||
),
|
||||
|
|
|
@ -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/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/services/http_requests.dart';
|
||||
import 'package:adguard_home_manager/classes/process_modal.dart';
|
||||
|
@ -25,7 +26,16 @@ class ClientsFab extends StatelessWidget {
|
|||
ProcessModal processModal = ProcessModal(context: context);
|
||||
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();
|
||||
|
||||
|
@ -58,6 +68,7 @@ class ClientsFab extends StatelessWidget {
|
|||
fullscreenDialog: true,
|
||||
builder: (BuildContext context) => ClientScreen(
|
||||
onConfirm: confirmAddClient,
|
||||
serverVersion: serversProvider.serverStatus.data!.serverVersion,
|
||||
)
|
||||
));
|
||||
}
|
||||
|
|
196
lib/screens/clients/safe_search_modal.dart
Normal file
196
lib/screens/clients/safe_search_modal.dart
Normal 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)
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
|
@ -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/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/providers/app_config_provider.dart';
|
||||
import 'package:adguard_home_manager/models/clients.dart';
|
||||
|
@ -188,6 +189,7 @@ class _SearchClientsWidgetState extends State<SearchClientsWidget> {
|
|||
onConfirm: confirmEditClient,
|
||||
onDelete: deleteClient,
|
||||
client: client,
|
||||
serverVersion: serversProvider.serverStatus.data!.serverVersion,
|
||||
)
|
||||
));
|
||||
}
|
||||
|
@ -337,7 +339,19 @@ class _SearchClientsWidgetState extends State<SearchClientsWidget> {
|
|||
Icon(
|
||||
Icons.search_rounded,
|
||||
size: 19,
|
||||
color: clientsScreen[index].safesearchEnabled == true
|
||||
color: versionIsGreater(
|
||||
currentVersion: serversProvider.serverStatus.data!.serverVersion,
|
||||
referenceVersion: 'v0.107.28',
|
||||
referenceVersionBeta: 'v0.108.0-b.33'
|
||||
) == true
|
||||
? clientsScreen[index].safeSearch!.enabled == true
|
||||
? 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
|
||||
|
|
|
@ -200,7 +200,6 @@ class _AddCustomRuleState extends State<AddCustomRule> {
|
|||
Switch(
|
||||
value: addImportant,
|
||||
onChanged: (value) => setState(() => addImportant = value),
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
)
|
||||
],
|
||||
),
|
||||
|
|
|
@ -197,7 +197,6 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
filter: legacyMode == true ? 'general_legacy' : 'general'
|
||||
);
|
||||
} : null,
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
)
|
||||
]
|
||||
);
|
||||
|
@ -357,7 +356,6 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
onChanged: disabled == false
|
||||
? onChange
|
||||
: null,
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
)
|
||||
],
|
||||
),
|
||||
|
|
|
@ -202,7 +202,6 @@ class _LogsConfigModalWidgetState extends State<LogsConfigModalWidget> {
|
|||
Switch(
|
||||
value: generalSwitch,
|
||||
onChanged: (value) => setState(() => generalSwitch = value),
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
)
|
||||
],
|
||||
),
|
||||
|
@ -233,7 +232,6 @@ class _LogsConfigModalWidgetState extends State<LogsConfigModalWidget> {
|
|||
Switch(
|
||||
value: anonymizeClientIp,
|
||||
onChanged: (value) => setState(() => anonymizeClientIp = value),
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
)
|
||||
],
|
||||
),
|
||||
|
|
|
@ -50,7 +50,6 @@ class AdvancedSettings extends StatelessWidget {
|
|||
trailing: Switch(
|
||||
value: appConfigProvider.overrideSslCheck,
|
||||
onChanged: updateSslCheck,
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
onTap: () => updateSslCheck(!appConfigProvider.overrideSslCheck),
|
||||
padding: const EdgeInsets.only(
|
||||
|
|
|
@ -449,7 +449,6 @@ class _DhcpWidgetState extends State<DhcpWidget> {
|
|||
onChanged: selectedInterface != null
|
||||
? (value) => setState(() => enabled = value)
|
||||
: null,
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
|
@ -58,7 +58,6 @@ class EncryptionMasterSwitch extends StatelessWidget {
|
|||
Switch(
|
||||
value: value,
|
||||
onChanged: (value) => onChange(value),
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
|
@ -69,7 +69,6 @@ class GeneralSettings extends StatelessWidget {
|
|||
trailing: Switch(
|
||||
value: appConfigProvider.hideZeroValues,
|
||||
onChanged: updateHideZeroValues,
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
onTap: () => updateHideZeroValues(!appConfigProvider.hideZeroValues),
|
||||
padding: const EdgeInsets.only(
|
||||
|
@ -86,7 +85,6 @@ class GeneralSettings extends StatelessWidget {
|
|||
trailing: Switch(
|
||||
value: appConfigProvider.showNameTimeLogs,
|
||||
onChanged: updateShowNameTimeLogs,
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
onTap: () => updateShowNameTimeLogs(!appConfigProvider.showNameTimeLogs),
|
||||
padding: const EdgeInsets.only(
|
||||
|
|
|
@ -4,11 +4,10 @@ import 'package:flutter/material.dart';
|
|||
import 'package:provider/provider.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/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/services/http_requests.dart';
|
||||
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
||||
|
|
|
@ -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({
|
||||
required Server server,
|
||||
required Map<String, bool> body
|
||||
|
|
|
@ -580,7 +580,6 @@ class _AddServerModalState extends State<AddServerModal> {
|
|||
onChanged: widget.server == null
|
||||
? (value) => setState(() => defaultServer = value)
|
||||
: null,
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
)
|
||||
],
|
||||
),
|
||||
|
@ -606,7 +605,6 @@ class _AddServerModalState extends State<AddServerModal> {
|
|||
Switch(
|
||||
value: homeAssistant,
|
||||
onChanged: (value) => setState(() => homeAssistant = value),
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
)
|
||||
],
|
||||
),
|
||||
|
|
Loading…
Add table
Reference in a new issue