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",
|
"disallowClient": "Disallow client",
|
||||||
"noDisallowedDomains": "No disallowed domains",
|
"noDisallowedDomains": "No disallowed domains",
|
||||||
"domainNotAdded": "The domain couldn't be added",
|
"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",
|
"disallowClient": "No permitir cliente",
|
||||||
"noDisallowedDomains": "No hay dominios no permitidos",
|
"noDisallowedDomains": "No hay dominios no permitidos",
|
||||||
"domainNotAdded": "El dominio no pudo ser añadido",
|
"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: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';
|
||||||
|
@ -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/filters_list.dart';
|
||||||
import 'package:adguard_home_manager/screens/filters/custom_rules_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/providers/app_config_provider.dart';
|
||||||
import 'package:adguard_home_manager/services/http_requests.dart';
|
import 'package:adguard_home_manager/services/http_requests.dart';
|
||||||
import 'package:adguard_home_manager/models/clients.dart';
|
import 'package:adguard_home_manager/models/clients.dart';
|
||||||
|
@ -51,11 +55,11 @@ class _FiltersWidgetState extends State<FiltersWidget> with TickerProviderStateM
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
if (result['result'] == 'success') {
|
if (result['result'] == 'success') {
|
||||||
widget.serversProvider.setFilteringData(result['data']);
|
widget.serversProvider.setFilteringData(result['data']);
|
||||||
widget.serversProvider.setFilteringLoadStatus(1, true);
|
widget.serversProvider.setFilteringLoadStatus(1, false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
widget.appConfigProvider.addLog(result['log']);
|
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
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final serversProvider = Provider.of<ServersProvider>(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(
|
return DefaultTabController(
|
||||||
length: 3,
|
length: 3,
|
||||||
|
@ -92,10 +145,35 @@ class _FiltersWidgetState extends State<FiltersWidget> with TickerProviderStateM
|
||||||
top: false,
|
top: false,
|
||||||
sliver: SliverAppBar(
|
sliver: SliverAppBar(
|
||||||
title: Text(AppLocalizations.of(context)!.filters),
|
title: Text(AppLocalizations.of(context)!.filters),
|
||||||
centerTitle: true,
|
|
||||||
pinned: true,
|
pinned: true,
|
||||||
floating: true,
|
floating: true,
|
||||||
forceElevated: innerBoxIsScrolled,
|
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(
|
bottom: TabBar(
|
||||||
controller: tabController,
|
controller: tabController,
|
||||||
tabs: [
|
tabs: [
|
||||||
|
|
|
@ -915,4 +915,49 @@ Future getServerInfo({
|
||||||
else {
|
else {
|
||||||
return result;
|
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