mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-05-25 11:22:23 +00:00
Added update lists
This commit is contained in:
parent
66e41af7c8
commit
5803998d73
4 changed files with 140 additions and 5 deletions
|
@ -281,5 +281,11 @@
|
|||
"disallowClient": "Disallow client",
|
||||
"noDisallowedDomains": "No disallowed domains",
|
||||
"domainNotAdded": "The domain couldn't be added",
|
||||
"statusSelected": "status selected"
|
||||
"statusSelected": "status selected",
|
||||
"updateLists": "Update lists",
|
||||
"checkHostFiltered": "Check host",
|
||||
"updatingLists": "Updating lists...",
|
||||
"listsUpdated": "lists updated",
|
||||
"listsNotUpdated": "Couldn't update lists",
|
||||
"listsNotLoaded": "Lists couldn't be loaded"
|
||||
}
|
|
@ -281,5 +281,11 @@
|
|||
"disallowClient": "No permitir cliente",
|
||||
"noDisallowedDomains": "No hay dominios no permitidos",
|
||||
"domainNotAdded": "El dominio no pudo ser añadido",
|
||||
"statusSelected": "estado/s seleccionados"
|
||||
"statusSelected": "estado/s seleccionados",
|
||||
"updateLists": "Actualizar listas",
|
||||
"checkHostFiltered": "Comprobar host",
|
||||
"updatingLists": "Actualizando listas...",
|
||||
"listsUpdated": "listas actualizadas",
|
||||
"listsNotUpdated": "No se pudieron actualizar las listas",
|
||||
"listsNotLoaded": "No se pudieron cargar las listas"
|
||||
}
|
|
@ -1,3 +1,5 @@
|
|||
// ignore_for_file: use_build_context_synchronously
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
@ -5,6 +7,8 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|||
import 'package:adguard_home_manager/screens/filters/filters_list.dart';
|
||||
import 'package:adguard_home_manager/screens/filters/custom_rules_list.dart';
|
||||
|
||||
import 'package:adguard_home_manager/functions/snackbar.dart';
|
||||
import 'package:adguard_home_manager/classes/process_modal.dart';
|
||||
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
||||
import 'package:adguard_home_manager/services/http_requests.dart';
|
||||
import 'package:adguard_home_manager/models/clients.dart';
|
||||
|
@ -51,11 +55,11 @@ class _FiltersWidgetState extends State<FiltersWidget> with TickerProviderStateM
|
|||
if (mounted) {
|
||||
if (result['result'] == 'success') {
|
||||
widget.serversProvider.setFilteringData(result['data']);
|
||||
widget.serversProvider.setFilteringLoadStatus(1, true);
|
||||
widget.serversProvider.setFilteringLoadStatus(1, false);
|
||||
}
|
||||
else {
|
||||
widget.appConfigProvider.addLog(result['log']);
|
||||
widget.serversProvider.setFilteringLoadStatus(2, true);
|
||||
widget.serversProvider.setFilteringLoadStatus(2, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -79,6 +83,55 @@ class _FiltersWidgetState extends State<FiltersWidget> with TickerProviderStateM
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final serversProvider = Provider.of<ServersProvider>(context);
|
||||
final appConfigProvider = Provider.of<AppConfigProvider>(context);
|
||||
|
||||
void fetchUpdateLists() async {
|
||||
ProcessModal processModal = ProcessModal(context: context);
|
||||
processModal.open(AppLocalizations.of(context)!.updatingLists);
|
||||
|
||||
final result = await updateLists(server: serversProvider.selectedServer!);
|
||||
|
||||
if (result['result'] == 'success') {
|
||||
final result2 = await getFiltering(server: widget.serversProvider.selectedServer!);
|
||||
|
||||
processModal.close();
|
||||
|
||||
if (mounted) {
|
||||
if (result2['result'] == 'success') {
|
||||
widget.serversProvider.setFilteringData(result2['data']);
|
||||
|
||||
showSnacbkar(
|
||||
context: context,
|
||||
appConfigProvider: appConfigProvider,
|
||||
label: "${result['data']['updated']} ${AppLocalizations.of(context)!.listsUpdated}",
|
||||
color: Colors.green
|
||||
);
|
||||
}
|
||||
else {
|
||||
widget.appConfigProvider.addLog(result2['log']);
|
||||
|
||||
showSnacbkar(
|
||||
context: context,
|
||||
appConfigProvider: appConfigProvider,
|
||||
label: AppLocalizations.of(context)!.listsNotLoaded,
|
||||
color: Colors.red
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
processModal.close();
|
||||
appConfigProvider.addLog(result['log']);
|
||||
|
||||
showSnacbkar(
|
||||
context: context,
|
||||
appConfigProvider: appConfigProvider,
|
||||
label: AppLocalizations.of(context)!.listsNotUpdated,
|
||||
color: Colors.red
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return DefaultTabController(
|
||||
length: 3,
|
||||
|
@ -92,10 +145,35 @@ class _FiltersWidgetState extends State<FiltersWidget> with TickerProviderStateM
|
|||
top: false,
|
||||
sliver: SliverAppBar(
|
||||
title: Text(AppLocalizations.of(context)!.filters),
|
||||
centerTitle: true,
|
||||
pinned: true,
|
||||
floating: true,
|
||||
forceElevated: innerBoxIsScrolled,
|
||||
actions: [
|
||||
PopupMenuButton(
|
||||
itemBuilder: (context) => [
|
||||
PopupMenuItem(
|
||||
onTap: fetchUpdateLists,
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(Icons.update),
|
||||
const SizedBox(width: 10),
|
||||
Text(AppLocalizations.of(context)!.updateLists)
|
||||
],
|
||||
)
|
||||
),
|
||||
PopupMenuItem(
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(Icons.shield_rounded),
|
||||
const SizedBox(width: 10),
|
||||
Text(AppLocalizations.of(context)!.checkHostFiltered)
|
||||
],
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
const SizedBox(width: 5),
|
||||
],
|
||||
bottom: TabBar(
|
||||
controller: tabController,
|
||||
tabs: [
|
||||
|
|
|
@ -915,4 +915,49 @@ Future getServerInfo({
|
|||
else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
Future updateLists({
|
||||
required Server server,
|
||||
}) async {
|
||||
final result = await Future.wait([
|
||||
apiRequest(
|
||||
urlPath: '/filtering/refresh',
|
||||
method: 'post',
|
||||
server: server,
|
||||
body: {'whitelist': true},
|
||||
type: 'update_lists'
|
||||
),
|
||||
apiRequest(
|
||||
urlPath: '/filtering/refresh',
|
||||
method: 'post',
|
||||
server: server,
|
||||
body: {'whitelist': false},
|
||||
type: 'update_lists'
|
||||
),
|
||||
]);
|
||||
|
||||
if (result[0]['hasResponse'] == true && result[1]['hasResponse'] == true) {
|
||||
if (result[0]['statusCode'] == 200 && result[1]['statusCode'] == 200) {
|
||||
return {
|
||||
'result': 'success',
|
||||
'data': {'updated': jsonDecode(result[0]['body'])['updated']+jsonDecode(result[1]['body'])['updated']}
|
||||
};
|
||||
}
|
||||
else {
|
||||
return {
|
||||
'result': 'error',
|
||||
'log': AppLog(
|
||||
type: 'update_lists',
|
||||
dateTime: DateTime.now(),
|
||||
message: 'error_code_not_expected',
|
||||
statusCode: result.map((res) => res['statusCode'] ?? 'null').toString(),
|
||||
resBody: result.map((res) => res['body'] ?? 'null').toString(),
|
||||
)
|
||||
};
|
||||
}
|
||||
}
|
||||
else {
|
||||
return result;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue