From 2a8bba966ddb0a8da784e31b45feb5689dbfb273 Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Tue, 11 Apr 2023 17:24:17 -0300 Subject: [PATCH 1/3] Authenticator KtLint check --- .editorconfig | 3 +++ .../com/amplifyframework/ui/authenticator/ui/PasswordReset.kt | 4 +++- .../ui/authenticator/ui/PasswordResetConfirm.kt | 4 +++- .../java/com/amplifyframework/ui/authenticator/ui/SignIn.kt | 4 +++- .../ui/authenticator/ui/SignInConfirmCustom.kt | 4 +++- .../amplifyframework/ui/authenticator/ui/SignInConfirmMfa.kt | 4 +++- .../java/com/amplifyframework/ui/authenticator/ui/SignUp.kt | 4 +++- .../com/amplifyframework/ui/authenticator/ui/SignUpConfirm.kt | 4 +++- .../com/amplifyframework/ui/authenticator/ui/VerifyUser.kt | 4 +++- .../amplifyframework/ui/authenticator/ui/VerifyUserConfirm.kt | 4 +++- 10 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..530cee93 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,3 @@ +[*.{kt,kts}] +#this is to match java checkstyle +max_line_length=120 diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasswordReset.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasswordReset.kt index e3e2d1ab..a3947fab 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasswordReset.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasswordReset.kt @@ -36,7 +36,9 @@ import kotlinx.coroutines.launch fun PasswordReset( state: PasswordResetState, modifier: Modifier = Modifier, - headerContent: @Composable (PasswordResetState) -> Unit = { AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_password_reset)) }, + headerContent: @Composable (PasswordResetState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_password_reset)) + }, footerContent: @Composable (PasswordResetState) -> Unit = { PasswordResetFooter(it) } ) { val scope = rememberCoroutineScope() diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasswordResetConfirm.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasswordResetConfirm.kt index de5af0c0..246201a0 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasswordResetConfirm.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasswordResetConfirm.kt @@ -36,7 +36,9 @@ import kotlinx.coroutines.launch fun PasswordResetConfirm( state: PasswordResetConfirmState, modifier: Modifier = Modifier, - headerContent: @Composable (PasswordResetConfirmState) -> Unit = { AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_password_reset)) }, + headerContent: @Composable (PasswordResetConfirmState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_password_reset)) + }, footerContent: @Composable (PasswordResetConfirmState) -> Unit = { PasswordResetConfirmFooter(it) }, deliveryNoticeContent: @Composable (details: AuthCodeDeliveryDetails?) -> Unit = { DeliveryDetails(it) } ) { diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignIn.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignIn.kt index 1af03ec3..1b226a90 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignIn.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignIn.kt @@ -36,7 +36,9 @@ import kotlinx.coroutines.launch fun SignIn( state: SignInState, modifier: Modifier = Modifier, - headerContent: @Composable (SignInState) -> Unit = { AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_signin)) }, + headerContent: @Composable (SignInState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_signin)) + }, footerContent: @Composable (SignInState) -> Unit = { SignInFooter(it) } ) { val scope = rememberCoroutineScope() diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmCustom.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmCustom.kt index f4600584..66fcdeef 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmCustom.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmCustom.kt @@ -37,7 +37,9 @@ import kotlinx.coroutines.launch fun SignInConfirmCustom( state: SignInConfirmCustomState, modifier: Modifier = Modifier, - headerContent: @Composable (state: SignInConfirmCustomState) -> Unit = { AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_signin_confirm_mfa)) }, + headerContent: @Composable (state: SignInConfirmCustomState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_signin_confirm_mfa)) + }, footerContent: @Composable (state: SignInConfirmCustomState) -> Unit = { SignInConfirmCustomFooter(it) }, deliveryDetailsContent: @Composable (details: AuthCodeDeliveryDetails?) -> Unit = { DeliveryDetails(it) } ) { diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmMfa.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmMfa.kt index 8daa7932..24b395b1 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmMfa.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmMfa.kt @@ -37,7 +37,9 @@ import kotlinx.coroutines.launch fun SignInConfirmMfa( state: SignInConfirmMfaState, modifier: Modifier = Modifier, - headerContent: @Composable (state: SignInConfirmMfaState) -> Unit = { AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_signin_confirm_mfa)) }, + headerContent: @Composable (state: SignInConfirmMfaState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_signin_confirm_mfa)) + }, footerContent: @Composable (state: SignInConfirmMfaState) -> Unit = { SignInConfirmMfaFooter(it) }, deliveryNoticeContent: @Composable (details: AuthCodeDeliveryDetails?) -> Unit = { DeliveryDetails(details = it) } ) { diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignUp.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignUp.kt index c538ec19..2773405c 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignUp.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignUp.kt @@ -37,7 +37,9 @@ import kotlinx.coroutines.launch fun SignUp( state: SignUpState, modifier: Modifier = Modifier, - headerContent: @Composable (SignUpState) -> Unit = { AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_signup)) }, + headerContent: @Composable (SignUpState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_signup)) + }, footerContent: @Composable (SignUpState) -> Unit = { SignUpFooter(it) } ) { val scope = rememberCoroutineScope() diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignUpConfirm.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignUpConfirm.kt index 543504c7..d59b2416 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignUpConfirm.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignUpConfirm.kt @@ -38,7 +38,9 @@ import kotlinx.coroutines.launch fun SignUpConfirm( state: SignUpConfirmState, modifier: Modifier = Modifier, - headerContent: @Composable (SignUpConfirmState) -> Unit = { AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_signup_confirm)) }, + headerContent: @Composable (SignUpConfirmState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_signup_confirm)) + }, footerContent: @Composable (SignUpConfirmState) -> Unit = { SignUpConfirmFooter(it) }, deliveryNoticeContent: @Composable (AuthCodeDeliveryDetails?) -> Unit = { DeliveryDetails(it) } ) { diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/VerifyUser.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/VerifyUser.kt index d6cdee15..74367283 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/VerifyUser.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/VerifyUser.kt @@ -44,7 +44,9 @@ import kotlinx.coroutines.launch fun VerifyUser( state: VerifyUserState, modifier: Modifier = Modifier, - headerContent: @Composable (VerifyUserState) -> Unit = { AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_verify_user)) }, + headerContent: @Composable (VerifyUserState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_verify_user)) + }, footerContent: @Composable (VerifyUserState) -> Unit = { VerifyUserFooter(it) } ) { val scope = rememberCoroutineScope() diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/VerifyUserConfirm.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/VerifyUserConfirm.kt index e257de2e..896cb23b 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/VerifyUserConfirm.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/VerifyUserConfirm.kt @@ -37,7 +37,9 @@ import kotlinx.coroutines.launch fun VerifyUserConfirm( state: VerifyUserConfirmState, modifier: Modifier = Modifier, - headerContent: @Composable (VerifyUserConfirmState) -> Unit = { AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_verify_user)) }, + headerContent: @Composable (VerifyUserConfirmState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_verify_user)) + }, footerContent: @Composable (VerifyUserConfirmState) -> Unit = { VerifyUserConfirmFooter(it) }, From 6e67556d305c8a93e9bd5327c93612b6bf48af94 Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Tue, 11 Apr 2023 17:37:44 -0300 Subject: [PATCH 2/3] Address remaining lint warnings in authenticator --- authenticator/build.gradle | 5 +++++ .../ui/authenticator/forms/FieldConfig.kt | 1 - .../ui/authenticator/strings/StringResolver.kt | 13 +++++++++---- .../ui/authenticator/ui/PhoneInputField.kt | 2 +- .../ui/authenticator/util/AuthProvider.kt | 4 ++-- .../ui/authenticator/util/AuthenticatorMessage.kt | 2 +- .../ui/authenticator/util/Errors.kt | 7 +++++-- .../util/MissingConfigurationException.kt | 3 ++- authenticator/src/main/res/values/messages.xml | 1 - build.gradle | 3 +++ 10 files changed, 28 insertions(+), 13 deletions(-) diff --git a/authenticator/build.gradle b/authenticator/build.gradle index 26397b64..b77bf9a0 100644 --- a/authenticator/build.gradle +++ b/authenticator/build.gradle @@ -10,6 +10,10 @@ android { testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } + compileOptions { + coreLibraryDesugaringEnabled true + } + publishing { singleVariant("release") { withSourcesJar() @@ -24,6 +28,7 @@ dependencies { implementation dependency.androidx.uiTooling implementation dependency.androidx.lifecycle_ktx implementation dependency.androidx.compose.viewmodel + coreLibraryDesugaring dependency.android.desugar testImplementation dependency.test.androidx.espresso testImplementation dependency.test.androidx.junit diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FieldConfig.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FieldConfig.kt index 6209fe2b..380e72e8 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FieldConfig.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FieldConfig.kt @@ -18,7 +18,6 @@ package com.amplifyframework.ui.authenticator.forms import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable import androidx.compose.ui.text.input.KeyboardType -import java.util.* /** * An [FieldConfig] specifies the metadata for an input field within the Authenticator composable. The diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/strings/StringResolver.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/strings/StringResolver.kt index 46b960eb..2626cc9b 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/strings/StringResolver.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/strings/StringResolver.kt @@ -57,9 +57,11 @@ internal open class StringResolver { FieldKey.Website -> stringResource(R.string.amplify_ui_authenticator_field_label_website) FieldKey.PhoneNumber -> stringResource(R.string.amplify_ui_authenticator_field_label_phone_number) FieldKey.Nickname -> stringResource(R.string.amplify_ui_authenticator_field_label_nickname) - FieldKey.PreferredUsername -> stringResource(R.string.amplify_ui_authenticator_field_label_preferred_username) + FieldKey.PreferredUsername -> + stringResource(R.string.amplify_ui_authenticator_field_label_preferred_username) FieldKey.Profile -> stringResource(R.string.amplify_ui_authenticator_field_label_profile) - FieldKey.VerificationAttribute -> stringResource(R.string.amplify_ui_authenticator_field_label_verification_attribute) + FieldKey.VerificationAttribute -> + stringResource(R.string.amplify_ui_authenticator_field_label_verification_attribute) else -> "" } } @@ -68,7 +70,8 @@ internal open class StringResolver { @ReadOnlyComposable open fun hint(config: FieldConfig): String? { return config.hint ?: when { - config.key == FieldKey.ConfirmPassword -> stringResource(R.string.amplify_ui_authenticator_field_hint_password_confirm) + config.key == FieldKey.ConfirmPassword -> + stringResource(R.string.amplify_ui_authenticator_field_hint_password_confirm) config is FieldConfig.Date -> "yyyy-mm-dd" else -> { val label = label(config) @@ -105,7 +108,8 @@ internal open class StringResolver { } errorText } - FieldError.PasswordsDoNotMatch -> stringResource(R.string.amplify_ui_authenticator_field_warn_unmatched_password) + FieldError.PasswordsDoNotMatch -> + stringResource(R.string.amplify_ui_authenticator_field_warn_unmatched_password) FieldError.MissingRequired -> { val label = title(config) stringResource(R.string.amplify_ui_authenticator_field_warn_empty, label) @@ -130,6 +134,7 @@ internal open class StringResolver { } } + @Suppress("UNUSED_EXPRESSION") @Composable @ReadOnlyComposable open fun error(error: AuthException): String { diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PhoneInputField.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PhoneInputField.kt index 489464f0..b0e656ff 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PhoneInputField.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PhoneInputField.kt @@ -54,7 +54,7 @@ import com.amplifyframework.ui.authenticator.forms.MutableFieldState import com.amplifyframework.ui.authenticator.strings.StringResolver import com.amplifyframework.ui.authenticator.util.dialCodeFor import com.amplifyframework.ui.authenticator.util.dialCodeList -import java.util.* +import java.util.Locale @Stable private class PhoneNumberFieldState( diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt index db5aa301..bc0901e0 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt @@ -39,13 +39,13 @@ import com.amplifyframework.ui.authenticator.amplify.AmplifyAuthConfiguration import com.amplifyframework.ui.authenticator.amplify.PasswordCriteria import com.amplifyframework.ui.authenticator.amplify.SignInMethod import com.amplifyframework.ui.authenticator.amplify.VerificationMechanism +import kotlin.coroutines.resume +import kotlin.coroutines.suspendCoroutine import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.channels.trySendBlocking import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.callbackFlow import org.json.JSONException -import kotlin.coroutines.resume -import kotlin.coroutines.suspendCoroutine /** * An abstraction of the Amplify.Auth API that allows us to use coroutines with no exceptions diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorMessage.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorMessage.kt index 496ebca2..043019a8 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorMessage.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorMessage.kt @@ -120,4 +120,4 @@ internal class ExpiredCodeMessage( */ internal class NetworkErrorMessage( override val cause: AuthException -): AuthenticatorMessageImpl(R.string.amplify_ui_authenticator_error_network), AuthenticatorMessage.Error +) : AuthenticatorMessageImpl(R.string.amplify_ui_authenticator_error_network), AuthenticatorMessage.Error diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/Errors.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/Errors.kt index 824e6889..4eeccea3 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/Errors.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/Errors.kt @@ -11,7 +11,7 @@ * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. - */ + */ // ktlint-disable filename package com.amplifyframework.ui.authenticator.util @@ -24,7 +24,10 @@ import com.amplifyframework.ui.authenticator.forms.FieldError // or an InvalidFormat if none internal fun InvalidPasswordException.toFieldError(): FieldError { val cause = this.cause - return if (cause is aws.sdk.kotlin.services.cognitoidentityprovider.model.InvalidPasswordException && cause.localizedMessage != null) { + return if ( + cause is aws.sdk.kotlin.services.cognitoidentityprovider.model.InvalidPasswordException && + cause.localizedMessage != null + ) { FieldError.Custom(cause.localizedMessage!!) } else { FieldError.InvalidFormat diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/MissingConfigurationException.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/MissingConfigurationException.kt index b63cfda6..c02e1168 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/MissingConfigurationException.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/MissingConfigurationException.kt @@ -23,5 +23,6 @@ import com.amplifyframework.auth.AuthException */ class MissingConfigurationException : AuthException( "Missing auth configuration", - "Make sure the Auth plugin is added and Amplify.configure is called. See https://docs.amplify.aws/lib/auth/getting-started/q/platform/android/ for details" + "Make sure the Auth plugin is added and Amplify.configure is called. See " + + "https://docs.amplify.aws/lib/auth/getting-started/q/platform/android/ for details" ) diff --git a/authenticator/src/main/res/values/messages.xml b/authenticator/src/main/res/values/messages.xml index 85632318..74f86c33 100644 --- a/authenticator/src/main/res/values/messages.xml +++ b/authenticator/src/main/res/values/messages.xml @@ -14,7 +14,6 @@ --> - Account created Password has been reset Confirmation code sent diff --git a/build.gradle b/build.gradle index 0bfe3e0d..9b6dc73e 100755 --- a/build.gradle +++ b/build.gradle @@ -73,6 +73,9 @@ ext { auth: "com.amplifyframework:aws-auth-cognito:$amplifyVersion", predictions: "com.amplifyframework:aws-predictions:$amplifyVersion", ], + android: [ + desugar: "com.android.tools:desugar_jdk_libs:1.1.8" + ], androidx: [ camera: [ core: "androidx.camera:camera-core:$cameraXVersion", From 6220700d51f417cb267fc83d6033fc472fc1eda8 Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Tue, 11 Apr 2023 17:58:19 -0300 Subject: [PATCH 3/3] Rename amplify package to auth to avoid gitignore issues --- .../authenticator/AuthenticatorViewModel.kt | 8 +-- .../auth/AmplifyAuthConfiguration.kt | 62 +++++++++++++++++++ .../ui/authenticator/forms/FieldValidator.kt | 2 +- .../ui/authenticator/forms/FormBuilder.kt | 4 +- .../states/ScreenStateFactory.kt | 8 +-- .../ui/authenticator/util/AuthProvider.kt | 8 +-- 6 files changed, 77 insertions(+), 15 deletions(-) create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/auth/AmplifyAuthConfiguration.kt diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt index 5e794cd4..db4594eb 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt @@ -42,10 +42,10 @@ import com.amplifyframework.auth.result.step.AuthResetPasswordStep import com.amplifyframework.auth.result.step.AuthSignInStep import com.amplifyframework.auth.result.step.AuthSignUpStep import com.amplifyframework.core.Amplify -import com.amplifyframework.ui.authenticator.amplify.AmplifyAuthConfiguration -import com.amplifyframework.ui.authenticator.amplify.toAttributeKey -import com.amplifyframework.ui.authenticator.amplify.toFieldKey -import com.amplifyframework.ui.authenticator.amplify.toVerifiedAttributeKey +import com.amplifyframework.ui.authenticator.auth.AmplifyAuthConfiguration +import com.amplifyframework.ui.authenticator.auth.toAttributeKey +import com.amplifyframework.ui.authenticator.auth.toFieldKey +import com.amplifyframework.ui.authenticator.auth.toVerifiedAttributeKey import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.forms.FieldError diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/auth/AmplifyAuthConfiguration.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/auth/AmplifyAuthConfiguration.kt new file mode 100644 index 00000000..a0633cd4 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/auth/AmplifyAuthConfiguration.kt @@ -0,0 +1,62 @@ +/* + * Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.amplifyframework.ui.authenticator.auth + +import androidx.annotation.IntRange +import com.amplifyframework.auth.AuthUserAttributeKey +import com.amplifyframework.ui.authenticator.forms.FieldKey + +internal enum class SignInMethod { + Username, Email, PhoneNumber +} + +internal enum class VerificationMechanism { + PhoneNumber, Email +} + +internal data class PasswordCriteria( + @IntRange(from = 6, to = 99) val length: Int, + val requiresNumber: Boolean, + val requiresSpecial: Boolean, + val requiresUpper: Boolean, + val requiresLower: Boolean +) + +/** + * This is a temporary mock of the information we'll need to get from Amplify during start up + */ +internal class AmplifyAuthConfiguration( + val signInMethod: SignInMethod, + val signUpAttributes: List, + val passwordCriteria: PasswordCriteria, + val verificationMechanisms: Set +) + +internal fun SignInMethod.toFieldKey() = when (this) { + SignInMethod.Username -> FieldKey.Username + SignInMethod.Email -> FieldKey.Email + SignInMethod.PhoneNumber -> FieldKey.PhoneNumber +} + +internal fun VerificationMechanism.toAttributeKey() = when (this) { + VerificationMechanism.PhoneNumber -> AuthUserAttributeKey.phoneNumber() + VerificationMechanism.Email -> AuthUserAttributeKey.email() +} + +internal fun VerificationMechanism.toVerifiedAttributeKey() = when (this) { + VerificationMechanism.PhoneNumber -> AuthUserAttributeKey.phoneNumberVerified() + VerificationMechanism.Email -> AuthUserAttributeKey.emailVerified() +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FieldValidator.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FieldValidator.kt index 61ddf7d5..88a818be 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FieldValidator.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FieldValidator.kt @@ -16,7 +16,7 @@ package com.amplifyframework.ui.authenticator.forms import android.util.Patterns -import com.amplifyframework.ui.authenticator.amplify.PasswordCriteria +import com.amplifyframework.ui.authenticator.auth.PasswordCriteria import com.amplifyframework.ui.authenticator.forms.FieldError.InvalidFormat import com.amplifyframework.ui.authenticator.forms.FieldError.PasswordsDoNotMatch import com.amplifyframework.ui.authenticator.forms.FieldKey.Password diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FormBuilder.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FormBuilder.kt index fa2c5254..6028d8a3 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FormBuilder.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FormBuilder.kt @@ -18,8 +18,8 @@ package com.amplifyframework.ui.authenticator.forms import androidx.compose.runtime.Composable import androidx.compose.ui.text.input.KeyboardType import com.amplifyframework.auth.AuthUserAttributeKey -import com.amplifyframework.ui.authenticator.amplify.SignInMethod -import com.amplifyframework.ui.authenticator.amplify.toFieldKey +import com.amplifyframework.ui.authenticator.auth.SignInMethod +import com.amplifyframework.ui.authenticator.auth.toFieldKey internal data class FormData(val fields: List) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/ScreenStateFactory.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/ScreenStateFactory.kt index 0879db07..80a2f370 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/ScreenStateFactory.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/ScreenStateFactory.kt @@ -20,10 +20,10 @@ import com.amplifyframework.auth.AuthUser import com.amplifyframework.auth.AuthUserAttribute import com.amplifyframework.auth.AuthUserAttributeKey import com.amplifyframework.auth.result.AuthSignOutResult -import com.amplifyframework.ui.authenticator.amplify.AmplifyAuthConfiguration -import com.amplifyframework.ui.authenticator.amplify.PasswordCriteria -import com.amplifyframework.ui.authenticator.amplify.SignInMethod -import com.amplifyframework.ui.authenticator.amplify.toFieldKey +import com.amplifyframework.ui.authenticator.auth.AmplifyAuthConfiguration +import com.amplifyframework.ui.authenticator.auth.PasswordCriteria +import com.amplifyframework.ui.authenticator.auth.SignInMethod +import com.amplifyframework.ui.authenticator.auth.toFieldKey import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.forms.FieldKey import com.amplifyframework.ui.authenticator.forms.FieldValidators diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt index bc0901e0..5d8411a2 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt @@ -35,10 +35,10 @@ import com.amplifyframework.hub.HubChannel import com.amplifyframework.hub.HubEvent import com.amplifyframework.hub.HubEventFilter import com.amplifyframework.ui.authenticator.BuildConfig -import com.amplifyframework.ui.authenticator.amplify.AmplifyAuthConfiguration -import com.amplifyframework.ui.authenticator.amplify.PasswordCriteria -import com.amplifyframework.ui.authenticator.amplify.SignInMethod -import com.amplifyframework.ui.authenticator.amplify.VerificationMechanism +import com.amplifyframework.ui.authenticator.auth.AmplifyAuthConfiguration +import com.amplifyframework.ui.authenticator.auth.PasswordCriteria +import com.amplifyframework.ui.authenticator.auth.SignInMethod +import com.amplifyframework.ui.authenticator.auth.VerificationMechanism import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine import kotlinx.coroutines.channels.awaitClose