diff --git a/lib/functions/get_filtered_status.dart b/lib/functions/get_filtered_status.dart new file mode 100644 index 0000000..3f84fc4 --- /dev/null +++ b/lib/functions/get_filtered_status.dart @@ -0,0 +1,92 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + + +Map getFilteredStatus(BuildContext context, String filterKey) { + switch (filterKey) { + case 'NotFilteredNotFound': + return { + 'filtered': false, + 'label': AppLocalizations.of(context)!.processed, + 'color': Colors.green, + 'icon': Icons.verified_user_rounded, + }; + + case 'NotFilteredWhiteList': + return { + 'filtered': false, + 'label': AppLocalizations.of(context)!.processedWhitelist, + 'color': Colors.green, + 'icon': Icons.verified_user_rounded, + }; + + case 'NotFilteredError': + return { + 'filtered': false, + 'label': AppLocalizations.of(context)!.processedError, + 'color': Colors.green, + 'icon': Icons.verified_user_rounded, + }; + + case 'FilteredBlackList': + return { + 'filtered': true, + 'label': AppLocalizations.of(context)!.blockedBlacklist, + 'color': Colors.red, + 'icon': Icons.gpp_bad_rounded, + }; + + case 'FilteredSafeBrowsing': + return { + 'filtered': true, + 'label': AppLocalizations.of(context)!.blockedSafeBrowsing, + 'color': Colors.red, + 'icon': Icons.gpp_bad_rounded, + }; + + case 'FilteredParental': + return { + 'filtered': true, + 'label': AppLocalizations.of(context)!.blockedParental, + 'color': Colors.red, + 'icon': Icons.gpp_bad_rounded, + }; + + case 'FilteredInvalid': + return { + 'filtered': true, + 'label': AppLocalizations.of(context)!.blockedInvalid, + 'color': Colors.red, + 'icon': Icons.gpp_bad_rounded, + }; + + case 'FilteredSafeSearch': + return { + 'filtered': true, + 'label': AppLocalizations.of(context)!.blockedSafeSearch, + 'color': Colors.red, + 'icon': Icons.gpp_bad_rounded, + }; + + case 'FilteredBlockedService': + return { + 'filtered': true, + 'label': AppLocalizations.of(context)!.blockedService, + 'color': Colors.red, + 'icon': Icons.gpp_bad_rounded, + }; + + case 'Rewrite': + case 'RewriteEtcHosts': + case 'RewriteRule': + return { + 'filtered': true, + 'label': AppLocalizations.of(context)!.rewrite, + 'color': Colors.blue, + 'icon': Icons.shield_rounded, + }; + + default: + return {'filtered': null, 'label': 'Unknown'}; + } +} \ No newline at end of file diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 21640cb..2154d94 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -111,7 +111,14 @@ "logsNotLoaded": "Logs list could not be loaded", "processed": "Processed (no list)", "blockedBlacklist": "Blocked (blacklist)", + "blockedSafeBrowsing": "Blocked (safe browsing)", + "blockedParental": "Blocked (parental filtering)", + "blockedInvalid": "Blocked (invalid)", + "blockedSafeSearch": "Blocked (safe search)", + "blockedService": "Blocked (blocked service)", "processedWhitelist": "Processed (whitelist)", + "processedError": "Processed (error)", + "rewrite": "Rewrite", "status": "Status", "result": "Result", "time": "Time", diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 3885a38..59c8437 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -111,7 +111,14 @@ "logsNotLoaded": "No se pudieron cargar los registros", "processed": "Procesada (sin lista)", "blockedBlacklist": "Bloqueada (lista negra)", + "blockedSafeBrowsing": "Bloqueada (navegación segura)", + "blockedParental": "Bloqueada (control parental)", + "blockedInvalid": "Bloqueada (inválida)", + "blockedSafeSearch": "Bloqueada (búsqueda segura)", + "blockedService": "Bloqueada (servicio bloqueado)", "processedWhitelist": "Procesada (lista blanca)", + "processedError": "Procesada (error)", + "rewrite": "Reescrita", "status": "Estado", "result": "Resultado", "time": "Hora", diff --git a/lib/screens/logs/log_details_modal.dart b/lib/screens/logs/log_details_modal.dart index 5929195..d8e971d 100644 --- a/lib/screens/logs/log_details_modal.dart +++ b/lib/screens/logs/log_details_modal.dart @@ -3,6 +3,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:adguard_home_manager/screens/logs/log_list_tile.dart'; +import 'package:adguard_home_manager/functions/get_filtered_status.dart'; import 'package:adguard_home_manager/functions/format_time.dart'; import 'package:adguard_home_manager/models/logs.dart'; @@ -18,54 +19,15 @@ class LogDetailsModal extends StatelessWidget { @override Widget build(BuildContext context) { - bool isLogBlocked() { - switch (log.reason) { - case 'NotFilteredNotFound': - return false; - - case 'NotFilteredWhiteList': - return true; - - case 'FilteredBlackList': - return true; - - default: - return true; - } - } - Widget getResult() { - switch (log.reason) { - case 'NotFilteredNotFound': - return Text( - AppLocalizations.of(context)!.processed, - style: const TextStyle( - color: Colors.green, - fontWeight: FontWeight.w500 - ), - ); - - case 'NotFilteredWhiteList': - return Text( - AppLocalizations.of(context)!.processedWhitelist, - style: const TextStyle( - color: Colors.green, - fontWeight: FontWeight.w500 - ), - ); - - case 'FilteredBlackList': - return Text( - AppLocalizations.of(context)!.blockedBlacklist, - style: const TextStyle( - color: Colors.red, - fontWeight: FontWeight.w500 - ), - ); - - default: - return const Text(""); - } + final filter = getFilteredStatus(context, log.reason); + return Text( + filter['label'], + style: TextStyle( + color: filter['color'], + fontWeight: FontWeight.w500 + ), + ); } return DraggableScrollableSheet( @@ -228,11 +190,11 @@ class LogDetailsModal extends StatelessWidget { children: [ TextButton( onPressed: () { - blockUnblock(log, isLogBlocked() == true ? 'unblock' : 'block'); + blockUnblock(log, getFilteredStatus(context, log.reason)['filtered'] == true ? 'unblock' : 'block'); Navigator.pop(context); }, child: Text( - isLogBlocked() == true + getFilteredStatus(context, log.reason)['filtered'] == true ? AppLocalizations.of(context)!.unblockDomain : AppLocalizations.of(context)!.blockDomain ) diff --git a/lib/screens/logs/log_tile.dart b/lib/screens/logs/log_tile.dart index 3e8f471..39c0cbe 100644 --- a/lib/screens/logs/log_tile.dart +++ b/lib/screens/logs/log_tile.dart @@ -6,6 +6,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:adguard_home_manager/screens/logs/log_details_modal.dart'; +import 'package:adguard_home_manager/functions/get_filtered_status.dart'; import 'package:adguard_home_manager/models/filtering_status.dart'; import 'package:adguard_home_manager/classes/process_modal.dart'; import 'package:adguard_home_manager/providers/servers_provider.dart'; @@ -57,35 +58,12 @@ class LogTile extends StatelessWidget { } Widget generateLogStatus() { - switch (log.reason) { - case "NotFilteredNotFound": - return logStatusWidget( - icon: Icons.verified_user_rounded, - color: Colors.green, - text: AppLocalizations.of(context)!.processed, - ); - - case "FilteredBlackList": - return logStatusWidget( - icon: Icons.verified_user_rounded, - color: Colors.red, - text: AppLocalizations.of(context)!.blockedBlacklist, - ); - - case "NotFilteredWhiteList": - return logStatusWidget( - icon: Icons.verified_user_rounded, - color: Colors.green, - text: AppLocalizations.of(context)!.processedWhitelist, - ); - - default: - return logStatusWidget( - icon: Icons.shield_rounded, - color: Colors.grey, - text: "Unknwon" - ); - } + final filter = getFilteredStatus(context, log.reason); + return logStatusWidget( + icon: filter['icon'], + color: filter['color'], + text: filter['label'], + ); } void blockUnblock(Log log, String newStatus) async {