mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-05-04 20:30:35 +00:00
Changed management switch disable method
This commit is contained in:
parent
8ed65579fa
commit
390a509380
2 changed files with 47 additions and 69 deletions
|
@ -15,6 +15,7 @@ class ServersProvider with ChangeNotifier {
|
|||
loadStatus: 0, // 0 = loading, 1 = loaded, 2 = error
|
||||
data: null
|
||||
); // serverStatus != null means server is connected
|
||||
List<String> _protectionsManagementProcess = []; // protections that are currenty being enabled or disabled
|
||||
|
||||
List<Server> get serversList {
|
||||
return _serversList;
|
||||
|
@ -28,6 +29,10 @@ class ServersProvider with ChangeNotifier {
|
|||
return _serverStatus;
|
||||
}
|
||||
|
||||
List<String> get protectionsManagementProcess {
|
||||
return _protectionsManagementProcess;
|
||||
}
|
||||
|
||||
void setDbInstance(Database db) {
|
||||
_dbInstance = db;
|
||||
}
|
||||
|
@ -136,57 +141,92 @@ class ServersProvider with ChangeNotifier {
|
|||
Future<bool> updateBlocking(Server server, String block, bool newStatus) async {
|
||||
switch (block) {
|
||||
case 'general':
|
||||
_protectionsManagementProcess.add('general');
|
||||
notifyListeners();
|
||||
|
||||
final result = await updateGeneralProtection(server, newStatus);
|
||||
|
||||
_protectionsManagementProcess = _protectionsManagementProcess.where((e) => e != 'general').toList();
|
||||
|
||||
if (result['result'] == 'success') {
|
||||
_serverStatus.data!.generalEnabled = newStatus;
|
||||
notifyListeners();
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
notifyListeners();
|
||||
return false;
|
||||
}
|
||||
|
||||
case 'filtering':
|
||||
_protectionsManagementProcess.add('filtering');
|
||||
notifyListeners();
|
||||
|
||||
final result = await updateFiltering(server, newStatus);
|
||||
|
||||
_protectionsManagementProcess = _protectionsManagementProcess.where((e) => e != 'filtering').toList();
|
||||
|
||||
if (result['result'] == 'success') {
|
||||
_serverStatus.data!.filteringEnabled = newStatus;
|
||||
notifyListeners();
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
notifyListeners();
|
||||
return false;
|
||||
}
|
||||
|
||||
case 'safeSearch':
|
||||
_protectionsManagementProcess.add('safeSearch');
|
||||
notifyListeners();
|
||||
|
||||
final result = await updateSafeSearch(server, newStatus);
|
||||
|
||||
_protectionsManagementProcess = _protectionsManagementProcess.where((e) => e != 'safeSearch').toList();
|
||||
|
||||
if (result['result'] == 'success') {
|
||||
_serverStatus.data!.safeSearchEnabled = newStatus;
|
||||
notifyListeners();
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
notifyListeners();
|
||||
return false;
|
||||
}
|
||||
|
||||
case 'safeBrowsing':
|
||||
_protectionsManagementProcess.add('safeBrowsing');
|
||||
notifyListeners();
|
||||
|
||||
final result = await updateSafeBrowsing(server, newStatus);
|
||||
|
||||
_protectionsManagementProcess = _protectionsManagementProcess.where((e) => e != 'safeBrowsing').toList();
|
||||
|
||||
if (result['result'] == 'success') {
|
||||
_serverStatus.data!.safeBrowsingEnabled = newStatus;
|
||||
notifyListeners();
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
notifyListeners();
|
||||
return false;
|
||||
}
|
||||
|
||||
case 'parentalControl':
|
||||
_protectionsManagementProcess.add('parentalControl');
|
||||
notifyListeners();
|
||||
|
||||
final result = await updateParentalControl(server, newStatus);
|
||||
|
||||
_protectionsManagementProcess = _protectionsManagementProcess.where((e) => e != 'parentalControl').toList();
|
||||
|
||||
if (result['result'] == 'success') {
|
||||
_serverStatus.data!.parentalControlEnabled = newStatus;
|
||||
notifyListeners();
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
notifyListeners();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,56 +6,19 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|||
|
||||
import 'package:adguard_home_manager/providers/servers_provider.dart';
|
||||
|
||||
class ManagementModal extends StatefulWidget {
|
||||
class ManagementModal extends StatelessWidget {
|
||||
const ManagementModal({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<ManagementModal> createState() => _ManagementModalState();
|
||||
}
|
||||
|
||||
class _ManagementModalState extends State<ManagementModal> {
|
||||
bool disableGeneralSwitch = false;
|
||||
bool disableFiltersSwitch = false;
|
||||
bool disableSafeBrowsingSwitch = false;
|
||||
bool disableParentalControlSwitch = false;
|
||||
bool disableSafeSearchSwitch = false;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final serversProvider = Provider.of<ServersProvider>(context);
|
||||
|
||||
void updateBlocking(bool value, String filter) async {
|
||||
switch (filter) {
|
||||
case 'general':
|
||||
setState(() => disableGeneralSwitch = true);
|
||||
break;
|
||||
|
||||
case 'filtering':
|
||||
setState(() => disableFiltersSwitch = true);
|
||||
break;
|
||||
|
||||
case 'safeBrowsing':
|
||||
setState(() => disableSafeBrowsingSwitch = true);
|
||||
break;
|
||||
|
||||
case 'parentalControl':
|
||||
setState(() => disableParentalControlSwitch = true);
|
||||
break;
|
||||
|
||||
case 'safeSearch':
|
||||
setState(() => disableSafeSearchSwitch = true);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
final result = await serversProvider.updateBlocking(
|
||||
serversProvider.selectedServer!,
|
||||
filter,
|
||||
value
|
||||
);
|
||||
|
||||
if (result == false) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
|
@ -64,31 +27,6 @@ class _ManagementModalState extends State<ManagementModal> {
|
|||
)
|
||||
);
|
||||
}
|
||||
|
||||
switch (filter) {
|
||||
case 'general':
|
||||
setState(() => disableGeneralSwitch = false);
|
||||
break;
|
||||
|
||||
case 'filtering':
|
||||
setState(() => disableFiltersSwitch = false);
|
||||
break;
|
||||
|
||||
case 'safeBrowsing':
|
||||
setState(() => disableSafeBrowsingSwitch = false);
|
||||
break;
|
||||
|
||||
case 'parentalControl':
|
||||
setState(() => disableParentalControlSwitch = false);
|
||||
break;
|
||||
|
||||
case 'safeSearch':
|
||||
setState(() => disableSafeSearchSwitch = false);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Widget mainSwitch() {
|
||||
|
@ -98,7 +36,7 @@ class _ManagementModalState extends State<ManagementModal> {
|
|||
color: Theme.of(context).primaryColor.withOpacity(0.1),
|
||||
borderRadius: BorderRadius.circular(28),
|
||||
child: InkWell(
|
||||
onTap: disableGeneralSwitch == false
|
||||
onTap: serversProvider.protectionsManagementProcess.contains('general') == false
|
||||
? () => updateBlocking(!serversProvider.serverStatus.data!.generalEnabled, 'general')
|
||||
: null,
|
||||
borderRadius: BorderRadius.circular(28),
|
||||
|
@ -118,7 +56,7 @@ class _ManagementModalState extends State<ManagementModal> {
|
|||
),
|
||||
Switch(
|
||||
value: serversProvider.serverStatus.data!.generalEnabled,
|
||||
onChanged: disableGeneralSwitch == false
|
||||
onChanged: serversProvider.protectionsManagementProcess.contains('general') == false
|
||||
? (value) => updateBlocking(value, 'general')
|
||||
: null,
|
||||
activeColor: Theme.of(context).primaryColor,
|
||||
|
@ -212,28 +150,28 @@ class _ManagementModalState extends State<ManagementModal> {
|
|||
Icons.filter_list_rounded,
|
||||
serversProvider.serverStatus.data!.filteringEnabled,
|
||||
(value) => updateBlocking(value, 'filtering'),
|
||||
disableFiltersSwitch
|
||||
serversProvider.protectionsManagementProcess.contains('filtering')
|
||||
),
|
||||
smallSwitch(
|
||||
AppLocalizations.of(context)!.safeBrowsing,
|
||||
Icons.vpn_lock_rounded,
|
||||
serversProvider.serverStatus.data!.safeBrowsingEnabled,
|
||||
(value) => updateBlocking(value, 'safeBrowsing'),
|
||||
disableSafeBrowsingSwitch
|
||||
serversProvider.protectionsManagementProcess.contains('safeBrowsing')
|
||||
),
|
||||
smallSwitch(
|
||||
AppLocalizations.of(context)!.parentalFiltering,
|
||||
Icons.block,
|
||||
serversProvider.serverStatus.data!.parentalControlEnabled,
|
||||
(value) => updateBlocking(value, 'parentalControl'),
|
||||
disableParentalControlSwitch
|
||||
serversProvider.protectionsManagementProcess.contains('parentalControl')
|
||||
),
|
||||
smallSwitch(
|
||||
AppLocalizations.of(context)!.safeSearch,
|
||||
Icons.search_rounded,
|
||||
serversProvider.serverStatus.data!.safeSearchEnabled,
|
||||
(value) => updateBlocking(value, 'safeSearch'),
|
||||
disableSafeSearchSwitch
|
||||
serversProvider.protectionsManagementProcess.contains('safeSearch')
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue