improve hardening options

This commit is contained in:
Fabian Freund
2025-06-28 20:41:08 +02:00
parent e538d25776
commit 14db60c0ff
4 changed files with 52 additions and 9 deletions
@@ -21,7 +21,7 @@ class WebEngineHardeningScreen extends HookConsumerWidget {
final allGroupsActive = useMemoized(
() =>
preferenceGroups.valueOrNull?.values.every(
(element) => element.isActive,
(element) => element.isActiveOrOptional,
) ??
false,
[EquatableValue(preferenceGroups.valueOrNull)],
@@ -78,9 +78,12 @@ class WebEngineHardeningScreen extends HookConsumerWidget {
subtitle: group.value.description.mapNotNull(
(description) => Text(description),
),
leading: HardeningGroupIcon(
isActive: group.value.isActive,
isPartlyActive: group.value.isPartlyActive,
leading: Badge(
isLabelVisible: group.value.hasInactiveOptional,
child: HardeningGroupIcon(
isActive: group.value.isActiveOrOptional,
isPartlyActive: group.value.isPartlyActive,
),
),
trailing: const Icon(Icons.chevron_right),
onTap: () async {
@@ -35,7 +35,7 @@ class WebEngineHardeningGroupScreen extends HookConsumerWidget {
child: Padding(
padding: const EdgeInsets.all(8.0),
child: SwitchListTile(
value: group.isActive,
value: group.isActiveOrOptional,
title: Text(
groupName,
style: TextStyle(
@@ -86,8 +86,42 @@ class WebEngineHardeningGroupScreen extends HookConsumerWidget {
child: SwitchListTile(
value: setting.value.isActive,
title: Text(setting.value.title ?? setting.key),
subtitle: setting.value.description.mapNotNull(
(description) => Text(description),
subtitle: Text.rich(
TextSpan(
children: [
if (setting.value.requireUserOptIn)
WidgetSpan(
child: Container(
padding: const EdgeInsets.symmetric(
horizontal: 6,
vertical: 2,
),
margin: const EdgeInsets.only(
right: 8,
),
decoration: BoxDecoration(
color: theme.colorScheme.error,
borderRadius:
BorderRadius.circular(4),
),
child: Text(
'Optional',
style: TextStyle(
fontSize: 10,
fontWeight: FontWeight.w500,
color:
theme.colorScheme.onError,
),
),
),
),
if (setting.value.description != null)
TextSpan(
text: setting.value.description,
// style: theme.textTheme.bodyMedium,
),
],
),
),
secondary: HardeningGroupIcon(
isActive: setting.value.isActive,