showDeleteSetDialog function

Future<void> showDeleteSetDialog(
  1. BuildContext context,
  2. NmCommandSetController controller
)

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);
}