showDeletePlanDialog function

Future<void> showDeletePlanDialog(
  1. BuildContext context,
  2. NmPlanController controller
)

Show delete plan dialog.

Implementation

Future<void> showDeletePlanDialog(BuildContext context, NmPlanController controller) async {
  final plan = controller.selected;
  if (plan == null) return;
  final l10n = NmTelecom.l10n(context);
  final impact = controller.inspectDelete(plan.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.planDeleteUnavailableTitle)]),
        content: Text(impact.message),
        actions: [TextButton(onPressed: () => Navigator.pop(context), child: Text(l10n.planCloseButton))],
      ),
    );
    return;
  }

  final confirmed = await showDialog<bool>(
    context: context,
    builder: (_) => AlertDialog(
      title: Row(children: [const NmIcon(NmFugue.applicationBadgeMinus), const SizedBox(width: 8), Text(l10n.planDeleteConfirmTitle)]),
      content: Text(impact.message),
      actions: [
        TextButton(onPressed: () => Navigator.pop(context, false), child: Text(l10n.planCancel)),
        FilledButton(
          style: FilledButton.styleFrom(backgroundColor: context.nm.colors.dangerText),
          onPressed: () => Navigator.pop(context, true),
          child: Text(l10n.planDeleteAction),
        ),
      ],
    ),
  );
  if (confirmed == true) controller.deletePlan(plan.id, l10n);
}