mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-05-17 15:32:51 +00:00
Added block unblock domain for a client
This commit is contained in:
parent
31ad3fcf6a
commit
806e74ca9f
3 changed files with 61 additions and 2 deletions
|
@ -780,5 +780,9 @@
|
|||
"date": "Date",
|
||||
"loadingChangelog": "Loading changelog...",
|
||||
"invalidIpOrUrl": "Invalid IP address or URL",
|
||||
"addPersistentClient": "Add as a persistent client"
|
||||
"addPersistentClient": "Add as a persistent client",
|
||||
"blockThisClientOnly": "Block for this client only",
|
||||
"unblockThisClientOnly": "Unblock for this client only",
|
||||
"domainBlockedThisClient": "{domain} blocked for this client",
|
||||
"domainUnblockedThisClient": "{domain} unblocked for this client"
|
||||
}
|
|
@ -780,5 +780,9 @@
|
|||
"date": "Fecha",
|
||||
"loadingChangelog": "Cargando registro de cambios...",
|
||||
"invalidIpOrUrl": "Dirección IP o URL no válida",
|
||||
"addPersistentClient": "Añadir como cliente persistente"
|
||||
"addPersistentClient": "Añadir como cliente persistente",
|
||||
"blockThisClientOnly": "Bloquear sólo para este cliente",
|
||||
"unblockThisClientOnly": "Desbloquear sólo para este cliente",
|
||||
"domainBlockedThisClient": "{domain} bloqueado para este cliente",
|
||||
"domainUnblockedThisClient": "{domain} desbloqueado para este cliente"
|
||||
}
|
|
@ -9,6 +9,7 @@ import 'package:adguard_home_manager/screens/clients/client/client_screen.dart';
|
|||
import 'package:adguard_home_manager/widgets/options_menu.dart';
|
||||
|
||||
import 'package:adguard_home_manager/providers/status_provider.dart';
|
||||
import 'package:adguard_home_manager/providers/filtering_provider.dart';
|
||||
import 'package:adguard_home_manager/classes/process_modal.dart';
|
||||
import 'package:adguard_home_manager/functions/snackbar.dart';
|
||||
import 'package:adguard_home_manager/functions/copy_clipboard.dart';
|
||||
|
@ -45,6 +46,7 @@ class LogTile extends StatelessWidget {
|
|||
final appConfigProvider = Provider.of<AppConfigProvider>(context);
|
||||
final statusProvider = Provider.of<StatusProvider>(context);
|
||||
final clientsProvider = Provider.of<ClientsProvider>(context);
|
||||
final filteringProvider = Provider.of<FilteringProvider>(context);
|
||||
|
||||
Widget logStatusWidget({
|
||||
required IconData icon,
|
||||
|
@ -147,6 +149,37 @@ class LogTile extends StatelessWidget {
|
|||
}
|
||||
}
|
||||
|
||||
void blockUnblockRuleClient() async {
|
||||
ProcessModal processModal = ProcessModal();
|
||||
processModal.open(AppLocalizations.of(context)!.addingRule);
|
||||
|
||||
final rule = isDomainBlocked(log.reason) == true
|
||||
? "@@||${log.question.name}^\$client='${log.client}'"
|
||||
: "||${log.question.name}^\$client='${log.client}'";
|
||||
|
||||
final result = await filteringProvider.addCustomRule(rule);
|
||||
|
||||
processModal.close();
|
||||
|
||||
if (!context.mounted) return;
|
||||
if (result == true) {
|
||||
showSnacbkar(
|
||||
appConfigProvider: appConfigProvider,
|
||||
label: isDomainBlocked(log.reason) == true
|
||||
? AppLocalizations.of(context)!.domainUnblockedThisClient(log.question.name!)
|
||||
: AppLocalizations.of(context)!.domainBlockedThisClient(log.question.name!),
|
||||
color: Colors.green
|
||||
);
|
||||
}
|
||||
else {
|
||||
showSnacbkar(
|
||||
appConfigProvider: appConfigProvider,
|
||||
label: AppLocalizations.of(context)!.ruleNotAdded,
|
||||
color: Colors.red
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void openAddClient() {
|
||||
Future.delayed(
|
||||
const Duration(milliseconds: 0),
|
||||
|
@ -182,6 +215,15 @@ class LogTile extends StatelessWidget {
|
|||
newStatus: domainBlocked == true ? 'unblock' : 'block'
|
||||
)
|
||||
),
|
||||
MenuOption(
|
||||
title: domainBlocked == true
|
||||
? AppLocalizations.of(context)!.unblockThisClientOnly
|
||||
: AppLocalizations.of(context)!.blockThisClientOnly,
|
||||
icon: domainBlocked == true
|
||||
? Icons.check_rounded
|
||||
: Icons.block_rounded,
|
||||
action: blockUnblockRuleClient
|
||||
),
|
||||
if (log.clientInfo?.name == "") MenuOption(
|
||||
title: AppLocalizations.of(context)!.addPersistentClient,
|
||||
icon: Icons.add_rounded,
|
||||
|
@ -365,6 +407,15 @@ class LogTile extends StatelessWidget {
|
|||
newStatus: domainBlocked == true ? 'unblock' : 'block'
|
||||
)
|
||||
),
|
||||
MenuOption(
|
||||
title: domainBlocked == true
|
||||
? AppLocalizations.of(context)!.unblockThisClientOnly
|
||||
: AppLocalizations.of(context)!.blockThisClientOnly,
|
||||
icon: domainBlocked == true
|
||||
? Icons.check_rounded
|
||||
: Icons.block_rounded,
|
||||
action: blockUnblockRuleClient
|
||||
),
|
||||
if (log.clientInfo?.name == "") MenuOption(
|
||||
title: AppLocalizations.of(context)!.addPersistentClient,
|
||||
icon: Icons.add_rounded,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue