import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:pweb/providers/two_factor.dart'; import 'package:pweb/generated/i18n/app_localizations.dart'; class ResendCodeButton extends StatelessWidget { const ResendCodeButton({super.key}); @override Widget build(BuildContext context) { final theme = Theme.of(context); final localizations = AppLocalizations.of(context)!; final provider = context.watch(); final isDisabled = provider.isCooldownActive || provider.isResending; final label = provider.isCooldownActive ? '${localizations.twoFactorResend} (${_formatCooldown(provider.cooldownRemainingSeconds)})' : localizations.twoFactorResend; return TextButton( onPressed: isDisabled ? null : () => provider.resendCode(), style: TextButton.styleFrom( padding: EdgeInsets.zero, minimumSize: const Size(0, 0), tapTargetSize: MaterialTapTargetSize.shrinkWrap, alignment: Alignment.centerLeft, foregroundColor: theme.colorScheme.primary, textStyle: theme.textTheme.bodyMedium?.copyWith( decoration: TextDecoration.underline, ), ), child: provider.isResending ? SizedBox( width: 16, height: 16, child: CircularProgressIndicator( strokeWidth: 2, color: theme.colorScheme.primary, ), ) : Text(label), ); } String _formatCooldown(int seconds) { final minutes = seconds ~/ 60; final remainingSeconds = seconds % 60; if (minutes > 0) { return '$minutes:${remainingSeconds.toString().padLeft(2, '0')}'; } return remainingSeconds.toString(); } }