showDeleteSetDialog function
Show delete set dialog.
Implementation
Future<void> showDeleteSetDialog(BuildContext context, NmCommandSetController controller) async {
final set = controller.selected;
if (set == null) return;
final l10n = NmTelecom.l10n(context);
final impact = controller.inspectDelete(set.id, l10n);
if (!impact.allowed) {
await showDialog<void>(
context: context,
builder: (_) => AlertDialog(
title: Row(children: [const NmIcon(NmFugue.lock), const SizedBox(width: 8), Text(l10n.cmdSetDeleteUnavailableTitle)]),
content: Text([impact.message, if (impact.planIds.isNotEmpty) l10n.cmdSetPlansLabel(impact.planIds.join(', '))].join('\n')),
actions: [TextButton(onPressed: () => Navigator.pop(context), child: Text(l10n.cmdSetCloseButton))],
),
);
return;
}
final confirmed = await showDialog<bool>(
context: context,
builder: (_) => AlertDialog(
title: Row(children: [const NmIcon(NmFugue.applicationBadgeMinus), const SizedBox(width: 8), Text(l10n.cmdSetDeleteConfirmTitle)]),
content: Text('${set.name}\n\n${impact.message}'),
actions: [
TextButton(onPressed: () => Navigator.pop(context, false), child: Text(l10n.cmdSetCancel)),
FilledButton(
style: FilledButton.styleFrom(backgroundColor: context.nm.colors.dangerText),
onPressed: () => Navigator.pop(context, true),
child: Text(l10n.cmdSetDeleteAction),
),
],
),
);
if (confirmed == true) controller.confirmDelete(set.id);
}