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",
|
"date": "Date",
|
||||||
"loadingChangelog": "Loading changelog...",
|
"loadingChangelog": "Loading changelog...",
|
||||||
"invalidIpOrUrl": "Invalid IP address or URL",
|
"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",
|
"date": "Fecha",
|
||||||
"loadingChangelog": "Cargando registro de cambios...",
|
"loadingChangelog": "Cargando registro de cambios...",
|
||||||
"invalidIpOrUrl": "Dirección IP o URL no válida",
|
"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/widgets/options_menu.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/providers/status_provider.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/classes/process_modal.dart';
|
||||||
import 'package:adguard_home_manager/functions/snackbar.dart';
|
import 'package:adguard_home_manager/functions/snackbar.dart';
|
||||||
import 'package:adguard_home_manager/functions/copy_clipboard.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 appConfigProvider = Provider.of<AppConfigProvider>(context);
|
||||||
final statusProvider = Provider.of<StatusProvider>(context);
|
final statusProvider = Provider.of<StatusProvider>(context);
|
||||||
final clientsProvider = Provider.of<ClientsProvider>(context);
|
final clientsProvider = Provider.of<ClientsProvider>(context);
|
||||||
|
final filteringProvider = Provider.of<FilteringProvider>(context);
|
||||||
|
|
||||||
Widget logStatusWidget({
|
Widget logStatusWidget({
|
||||||
required IconData icon,
|
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() {
|
void openAddClient() {
|
||||||
Future.delayed(
|
Future.delayed(
|
||||||
const Duration(milliseconds: 0),
|
const Duration(milliseconds: 0),
|
||||||
|
@ -182,6 +215,15 @@ class LogTile extends StatelessWidget {
|
||||||
newStatus: domainBlocked == true ? 'unblock' : 'block'
|
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(
|
if (log.clientInfo?.name == "") MenuOption(
|
||||||
title: AppLocalizations.of(context)!.addPersistentClient,
|
title: AppLocalizations.of(context)!.addPersistentClient,
|
||||||
icon: Icons.add_rounded,
|
icon: Icons.add_rounded,
|
||||||
|
@ -365,6 +407,15 @@ class LogTile extends StatelessWidget {
|
||||||
newStatus: domainBlocked == true ? 'unblock' : 'block'
|
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(
|
if (log.clientInfo?.name == "") MenuOption(
|
||||||
title: AppLocalizations.of(context)!.addPersistentClient,
|
title: AppLocalizations.of(context)!.addPersistentClient,
|
||||||
icon: Icons.add_rounded,
|
icon: Icons.add_rounded,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue