From 11511913031119a519ebe713861b2c7a21fc69c8 Mon Sep 17 00:00:00 2001 From: Andrei Lesnitsky Date: Thu, 16 Nov 2023 01:28:34 +0100 Subject: [PATCH] feat(ui_auth): export `localizedErrorText` When `ErrorText.localizeError` is used, it becomes a single source of truth. This means all error messages should be localized by developer. A subset of errors is already localized by Firebase UI, so `localizedErrorText` that is used internally is now public and could be used inside `ErrorText.localizeError`. Example: ```dart ErrorText.localizeError = (BuildContext context, FirebaseAuthException e) { if (e.code == "user-not-found" || e.code == "wrong-password") return "Wrong credentials"; final defaultLabels = FirebaseUILocalizations.labelsOf(context); return localizedErrorText(e.code, defaultLabels); } ``` --- packages/firebase_ui_auth/lib/firebase_ui_auth.dart | 2 +- packages/firebase_ui_auth/lib/src/widgets/error_text.dart | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/firebase_ui_auth/lib/firebase_ui_auth.dart b/packages/firebase_ui_auth/lib/firebase_ui_auth.dart index bcd93b11..86db8032 100644 --- a/packages/firebase_ui_auth/lib/firebase_ui_auth.dart +++ b/packages/firebase_ui_auth/lib/firebase_ui_auth.dart @@ -81,7 +81,7 @@ export 'src/widgets/email_form.dart' export 'src/widgets/email_input.dart'; export 'src/widgets/email_link_sign_in_button.dart'; export 'src/widgets/email_sign_up_dialog.dart'; -export 'src/widgets/error_text.dart' show ErrorText; +export 'src/widgets/error_text.dart' show ErrorText, localizedErrorText; export 'src/widgets/forgot_password_button.dart'; export 'src/widgets/internal/oauth_provider_button.dart' show OAuthProviderButton, OAuthButtonVariant; diff --git a/packages/firebase_ui_auth/lib/src/widgets/error_text.dart b/packages/firebase_ui_auth/lib/src/widgets/error_text.dart index 68e73421..e7d48f93 100644 --- a/packages/firebase_ui_auth/lib/src/widgets/error_text.dart +++ b/packages/firebase_ui_auth/lib/src/widgets/error_text.dart @@ -43,11 +43,13 @@ class ErrorText extends StatelessWidget { /// /// Example usage: /// ```dart - /// ErrorText.localizeError = (BuildContext context, fba.FirebaseAuthException e) { + /// ErrorText.localizeError = (BuildContext context, FirebaseAuthException e) { + /// final defaultLabels = FirebaseUILocalizations.labelsOf(context); + /// /// return switch (e.code) { /// 'user-not-found' => 'Please create an account first.', /// 'credential-already-in-use' => 'This email is already in use.', - /// _ => 'Oh no! Something went wrong.' + /// _ => localizedErrorText(e.code, defaultLabels) ?? 'Oh no! Something went wrong.', /// } /// } static String Function(