import 'package:shuffle/features/auth/domain/auth_failure.dart'; /// Von wo „E-Mail erneut senden“ ausgelöst wird (Spec #1 § 4.4, F12). enum ResendOrigin { /// CheckEmailScreen: Die Adresse kann frei eingegeben sein. checkEmail, /// LoginScreen nach `email_not_confirmed`: Das Passwort war richtig. login, } /// Wendet die Regel aus F12 für „E-Mail erneut senden“ an. /// /// `null` heißt: wie Erfolg behandeln. Aus dem LoginScreen wird /// `emailSendLimited` zum sichtbaren Drosselungshinweis ([RateLimited]). AuthFailure? resendFailureFor(AuthFailure failure, ResendOrigin origin) { if (failure is EmailSendLimited) { return switch (origin) { ResendOrigin.checkEmail => null, ResendOrigin.login => const AuthFailure.rateLimited(), }; } return failure; } /// Registrierung und Passwort-Reset (freie Adresseingabe): `emailSendLimited` /// zählt wie Erfolg (F12, KTO-01 Kriterium 4). Liefert `null` für „wie /// Erfolg“, sonst den Fehler. AuthFailure? openEmailInputFailureFor(AuthFailure failure) => failure is EmailSendLimited ? null : failure;