From 01d8f98d34fb2ec1383221ba0db0e2128c5a8f6a Mon Sep 17 00:00:00 2001 From: Tomas Alabes Date: Mon, 15 Jan 2024 17:28:09 +0100 Subject: [PATCH 1/3] headless signup user metadata option --- lib/src/components/supa_email_auth.dart | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/lib/src/components/supa_email_auth.dart b/lib/src/components/supa_email_auth.dart index fbc8e59..74465de 100644 --- a/lib/src/components/supa_email_auth.dart +++ b/lib/src/components/supa_email_auth.dart @@ -74,6 +74,8 @@ class SupaEmailAuth extends StatefulWidget { final List? metadataFields; + final Map? extraMetadata; + /// {@macro supa_email_auth} const SupaEmailAuth({ Key? key, @@ -83,6 +85,7 @@ class SupaEmailAuth extends StatefulWidget { this.onPasswordResetEmailSent, this.onError, this.metadataFields, + this.extraMetadata }) : super(key: key); @override @@ -204,11 +207,7 @@ class _SupaEmailAuthState extends State { email: _emailController.text.trim(), password: _passwordController.text.trim(), emailRedirectTo: widget.redirectTo, - data: widget.metadataFields == null - ? null - : _metadataControllers.map( - (metaDataField, controller) => - MapEntry(metaDataField.key, controller.text)), + data: _resolveData(), ); widget.onSignUpComplete.call(response); } @@ -295,4 +294,18 @@ class _SupaEmailAuthState extends State { ), ); } + + Map _resolveData() { + var extra = widget.extraMetadata ?? {}; + extra.addAll(_resolveMetadataFieldsData()); + return extra; + } + + Map _resolveMetadataFieldsData() { + return widget.metadataFields != null + ? _metadataControllers.map( + (metaDataField, controller) => + MapEntry(metaDataField.key, controller.text)) + : {}; + } } From d13ef87f020a9602ce93d1eb0df11bf801c87a28 Mon Sep 17 00:00:00 2001 From: Tomas Alabes Date: Tue, 16 Jan 2024 08:39:18 +0100 Subject: [PATCH 2/3] Improve extraMetadata and metadataFields documentation --- lib/src/components/supa_email_auth.dart | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/src/components/supa_email_auth.dart b/lib/src/components/supa_email_auth.dart index 74465de..6f5a717 100644 --- a/lib/src/components/supa_email_auth.dart +++ b/lib/src/components/supa_email_auth.dart @@ -67,13 +67,16 @@ class SupaEmailAuth extends StatefulWidget { /// Callback for sending the password reset email final void Function()? onPasswordResetEmailSent; - /// Callback for when the auth action threw an excepction + /// Callback for when the auth action threw an exception /// /// If set to `null`, a snack bar with error color will show up. final void Function(Object error)? onError; + /// Set of additional fields to the signup form that will become + /// part of the user_metadata final List? metadataFields; + /// Additional properties for user_metadata on signup final Map? extraMetadata; /// {@macro supa_email_auth} @@ -295,12 +298,17 @@ class _SupaEmailAuthState extends State { ); } + /// Resolve the user_metadata that we will send during sign-up + /// + /// In case both MetadataFields and extraMetadata have the same + /// key in their map, the MetadataFields (form fields) win Map _resolveData() { var extra = widget.extraMetadata ?? {}; extra.addAll(_resolveMetadataFieldsData()); return extra; } + /// Resolve the user_metadata coming from the metadataFields Map _resolveMetadataFieldsData() { return widget.metadataFields != null ? _metadataControllers.map( From 5ee5bd468184f7b29cdcc2a1ef5f9c2970133874 Mon Sep 17 00:00:00 2001 From: dshukertjr Date: Wed, 17 Jan 2024 10:44:27 +0900 Subject: [PATCH 3/3] Add trailing comma --- lib/src/components/supa_email_auth.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/src/components/supa_email_auth.dart b/lib/src/components/supa_email_auth.dart index 6f5a717..2cc9d90 100644 --- a/lib/src/components/supa_email_auth.dart +++ b/lib/src/components/supa_email_auth.dart @@ -88,7 +88,7 @@ class SupaEmailAuth extends StatefulWidget { this.onPasswordResetEmailSent, this.onError, this.metadataFields, - this.extraMetadata + this.extraMetadata, }) : super(key: key); @override @@ -311,9 +311,9 @@ class _SupaEmailAuthState extends State { /// Resolve the user_metadata coming from the metadataFields Map _resolveMetadataFieldsData() { return widget.metadataFields != null - ? _metadataControllers.map( - (metaDataField, controller) => - MapEntry(metaDataField.key, controller.text)) - : {}; + ? _metadataControllers.map( + (metaDataField, controller) => + MapEntry(metaDataField.key, controller.text)) + : {}; } }