From 82756c2f34ca46fdcd292b818de375ae3e5d3cc1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 20 Jul 2025 19:15:39 -0700 Subject: [PATCH 01/29] Update dependency com.diffplug.spotless to v7.2.0 (#134) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7e019e1c..896b65b2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -25,7 +25,7 @@ navigationCompose = "2.9.2" okhttp = "5.1.0" retrofit = "3.0.0" sortDependencies = "0.14" -spotless = "7.1.0" +spotless = "7.2.0" [libraries] activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityKtx" } From f1ad95bff89b19be108b728cc76910b31f98a8fc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Jul 2025 13:17:54 -0700 Subject: [PATCH 02/29] Update dependency com.diffplug.spotless to v7.2.1 (#135) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 896b65b2..c65fbb95 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -25,7 +25,7 @@ navigationCompose = "2.9.2" okhttp = "5.1.0" retrofit = "3.0.0" sortDependencies = "0.14" -spotless = "7.2.0" +spotless = "7.2.1" [libraries] activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityKtx" } From 012e6e7fdfc4913bd71c27ae15c21a32a6645c97 Mon Sep 17 00:00:00 2001 From: Sam Wolfand Date: Mon, 21 Jul 2025 17:56:40 -0700 Subject: [PATCH 03/29] update userFlow to user --- .../src/main/kotlin/com/clerk/exampleapp/MainViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/example-app/src/main/kotlin/com/clerk/exampleapp/MainViewModel.kt b/samples/example-app/src/main/kotlin/com/clerk/exampleapp/MainViewModel.kt index 987c2e0f..21ae08c6 100644 --- a/samples/example-app/src/main/kotlin/com/clerk/exampleapp/MainViewModel.kt +++ b/samples/example-app/src/main/kotlin/com/clerk/exampleapp/MainViewModel.kt @@ -39,7 +39,7 @@ class MainViewModel @Inject constructor() : ViewModel() { * Combine initialization state with user state to determine UI state. This ensures we show * loading until Clerk is initialized and then react to user authentication changes. */ - combine(Clerk.isInitialized, Clerk.userFlow) { isInitialized, user -> + combine(Clerk.isInitialized, Clerk.user) { isInitialized, user -> when { !isInitialized -> AuthenticationState.Loading user != null -> AuthenticationState.SignedIn From 5b73d70d177c905a5221a933ff5439c5f0d439cc Mon Sep 17 00:00:00 2001 From: Sam Wolfand Date: Wed, 23 Jul 2025 21:04:27 -0700 Subject: [PATCH 04/29] Add custom flow repo and get rid of example app (#138) * add module * update settings.gradle.kts * update .gitignore * add sign in custom flow * add entry * update ui state and add application * add sign up view model * cleanup * remove example app for now * add MFA * add OAuth * Add new launcher * add forgot password phone * rename to phone * add reset password with email * add email custom flow * Add phone number flow * update readme * update key --- .gitignore | 3 +- README.md | 150 +++++---- build.gradle.kts | 1 + gradle.properties | 2 +- gradle/libs.versions.toml | 8 + samples/custom-flows/.gitignore | 1 + samples/custom-flows/build.gradle.kts | 59 ++++ samples/custom-flows/proguard-rules.pro | 21 ++ .../custom-flows/src/main/AndroidManifest.xml | 34 +++ .../src/main/ic_launcher-playstore.png | Bin 0 -> 192961 bytes .../customflows/CustomFlowsApplication.kt | 16 + .../com/clerk/customflows/MainActivity.kt | 129 ++++++++ .../com/clerk/customflows/MainViewModel.kt | 51 ++++ .../customflows/addemail/AddEmailActivity.kt | 87 ++++++ .../customflows/addemail/AddEmailViewModel.kt | 85 ++++++ .../customflows/addphone/AddPhoneActivity.kt | 87 ++++++ .../customflows/addphone/AddPhoneViewModel.kt | 85 ++++++ .../emailpassword/mfa/MFASignInActivity.kt | 71 +++++ .../emailpassword/mfa/MFASignInViewModel.kt | 63 ++++ .../signin/EmailPasswordSignInActivity.kt | 75 +++++ .../signin/EmailPasswordSignInViewModel.kt | 52 ++++ .../signup/EmailPasswordSignUpActivity.kt | 89 ++++++ .../signup/EmailPasswordSignUpViewModel.kt | 69 +++++ .../ForgotPasswordEmailActivity.kt | 106 +++++++ .../ForgotPasswordEmailViewModel.kt | 115 +++++++ .../ForgotPasswordPhoneNumberActivity.kt | 106 +++++++ .../phone/ForgotPasswordPhoneViewModel.kt | 115 +++++++ .../clerk/customflows/oauth/OAuthActivity.kt | 39 +++ .../clerk/customflows/oauth/OAuthViewModel.kt | 76 +++++ .../com/clerk/customflows/ui/theme/Color.kt | 11 + .../com/clerk/customflows/ui/theme/Theme.kt | 51 ++++ .../com/clerk/customflows/ui/theme/Type.kt | 36 +++ .../res/drawable/ic_launcher_background.xml | 170 +++++++++++ .../res/drawable/ic_launcher_foreground.xml | 30 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../mipmap-anydpi-v26/ic_launcher_round.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 2544 bytes .../mipmap-hdpi/ic_launcher_foreground.webp | Bin 0 -> 9896 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 3494 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 1524 bytes .../mipmap-mdpi/ic_launcher_foreground.webp | Bin 0 -> 4392 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 2122 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 3842 bytes .../mipmap-xhdpi/ic_launcher_foreground.webp | Bin 0 -> 17388 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 5514 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 7736 bytes .../mipmap-xxhdpi/ic_launcher_foreground.webp | Bin 0 -> 39596 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 10352 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 13450 bytes .../ic_launcher_foreground.webp | Bin 0 -> 69460 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 16670 bytes .../src/main/res/values/colors.xml | 10 + .../res/values/ic_launcher_background.xml | 0 .../src/main/res/values/strings.xml | 12 + .../src/main/res/values/themes.xml | 5 + samples/example-app/README.md | 176 ----------- samples/example-app/build.gradle.kts | 70 ----- .../example-app/src/main/AndroidManifest.xml | 27 -- .../src/main/ic_launcher-playstore.png | Bin 197419 -> 0 bytes .../com/clerk/exampleapp/MainActivity.kt | 56 ---- .../com/clerk/exampleapp/MainApplication.kt | 39 --- .../com/clerk/exampleapp/MainViewModel.kt | 66 ---- .../com/clerk/exampleapp/navigation/Route.kt | 13 - .../clerk/exampleapp/ui/common/CodeInput.kt | 40 --- .../clerk/exampleapp/ui/common/DividerRow.kt | 40 --- .../com/clerk/exampleapp/ui/common/Header.kt | 40 --- .../exampleapp/ui/common/PhoneNumberInput.kt | 46 --- .../exampleapp/ui/common/SocialButton.kt | 36 --- .../exampleapp/ui/common/SocialProviderRow.kt | 22 -- .../exampleapp/ui/screens/LoadingScreen.kt | 31 -- .../ui/screens/profile/ProfileScreen.kt | 52 ---- .../ui/screens/profile/ProfileViewModel.kt | 39 --- .../ui/screens/signin/SignInOrUpScreen.kt | 105 ------- .../ui/screens/signin/SignInOrUpViewModel.kt | 255 ---------------- .../com/clerk/exampleapp/ui/theme/Color.kt | 221 -------------- .../com/clerk/exampleapp/ui/theme/Theme.kt | 285 ------------------ .../com/clerk/exampleapp/ui/theme/Type.kt | 20 -- .../utils/NanpVisualTransformation.kt | 47 --- .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 2400 -> 0 bytes .../mipmap-hdpi/ic_launcher_foreground.webp | Bin 7188 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 3384 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 1454 -> 0 bytes .../mipmap-mdpi/ic_launcher_foreground.webp | Bin 3434 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 2098 -> 0 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 3800 -> 0 bytes .../mipmap-xhdpi/ic_launcher_foreground.webp | Bin 12754 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 5306 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 7510 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_foreground.webp | Bin 29236 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 10172 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 13178 -> 0 bytes .../ic_launcher_foreground.webp | Bin 51850 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 16414 -> 0 bytes .../src/main/res/values/strings.xml | 16 - .../example-app/src/main/res/values/theme.xml | 5 - settings.gradle.kts | 2 +- .../src/test/java/com/clerk/sdk/ClerkTest.kt | 4 +- 97 files changed, 2058 insertions(+), 1815 deletions(-) create mode 100644 samples/custom-flows/.gitignore create mode 100644 samples/custom-flows/build.gradle.kts create mode 100644 samples/custom-flows/proguard-rules.pro create mode 100644 samples/custom-flows/src/main/AndroidManifest.xml create mode 100644 samples/custom-flows/src/main/ic_launcher-playstore.png create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/CustomFlowsApplication.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/MainActivity.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/MainViewModel.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/addemail/AddEmailActivity.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/addemail/AddEmailViewModel.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/addphone/AddPhoneActivity.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/addphone/AddPhoneViewModel.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/mfa/MFASignInActivity.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/mfa/MFASignInViewModel.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signin/EmailPasswordSignInActivity.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signin/EmailPasswordSignInViewModel.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signup/EmailPasswordSignUpActivity.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signup/EmailPasswordSignUpViewModel.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/emailaddress/ForgotPasswordEmailActivity.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/emailaddress/ForgotPasswordEmailViewModel.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/phone/ForgotPasswordPhoneNumberActivity.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/phone/ForgotPasswordPhoneViewModel.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/oauth/OAuthActivity.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/oauth/OAuthViewModel.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/ui/theme/Color.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/ui/theme/Theme.kt create mode 100644 samples/custom-flows/src/main/java/com/clerk/customflows/ui/theme/Type.kt create mode 100644 samples/custom-flows/src/main/res/drawable/ic_launcher_background.xml create mode 100644 samples/custom-flows/src/main/res/drawable/ic_launcher_foreground.xml rename samples/{example-app => custom-flows}/src/main/res/mipmap-anydpi-v26/ic_launcher.xml (100%) rename samples/{example-app => custom-flows}/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml (100%) create mode 100644 samples/custom-flows/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp create mode 100644 samples/custom-flows/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 samples/custom-flows/src/main/res/values/colors.xml rename samples/{example-app => custom-flows}/src/main/res/values/ic_launcher_background.xml (100%) create mode 100644 samples/custom-flows/src/main/res/values/strings.xml create mode 100644 samples/custom-flows/src/main/res/values/themes.xml delete mode 100644 samples/example-app/README.md delete mode 100644 samples/example-app/build.gradle.kts delete mode 100644 samples/example-app/src/main/AndroidManifest.xml delete mode 100644 samples/example-app/src/main/ic_launcher-playstore.png delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/MainActivity.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/MainApplication.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/MainViewModel.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/navigation/Route.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/common/CodeInput.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/common/DividerRow.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/common/Header.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/common/PhoneNumberInput.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/common/SocialButton.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/common/SocialProviderRow.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/screens/LoadingScreen.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/screens/profile/ProfileScreen.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/screens/profile/ProfileViewModel.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/screens/signin/SignInOrUpScreen.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/screens/signin/SignInOrUpViewModel.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/theme/Color.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/theme/Theme.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/ui/theme/Type.kt delete mode 100644 samples/example-app/src/main/kotlin/com/clerk/exampleapp/utils/NanpVisualTransformation.kt delete mode 100644 samples/example-app/src/main/res/mipmap-hdpi/ic_launcher.webp delete mode 100644 samples/example-app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp delete mode 100644 samples/example-app/src/main/res/mipmap-hdpi/ic_launcher_round.webp delete mode 100644 samples/example-app/src/main/res/mipmap-mdpi/ic_launcher.webp delete mode 100644 samples/example-app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp delete mode 100644 samples/example-app/src/main/res/mipmap-mdpi/ic_launcher_round.webp delete mode 100644 samples/example-app/src/main/res/mipmap-xhdpi/ic_launcher.webp delete mode 100644 samples/example-app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp delete mode 100644 samples/example-app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp delete mode 100644 samples/example-app/src/main/res/mipmap-xxhdpi/ic_launcher.webp delete mode 100644 samples/example-app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp delete mode 100644 samples/example-app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp delete mode 100644 samples/example-app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp delete mode 100644 samples/example-app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp delete mode 100644 samples/example-app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp delete mode 100644 samples/example-app/src/main/res/values/strings.xml delete mode 100644 samples/example-app/src/main/res/values/theme.xml diff --git a/.gitignore b/.gitignore index 77d4b003..28a741cc 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,5 @@ workbench/* /buildSrc/build/ /samples/build/ /samples/example-app/build/ -/samples/quickstart/build/ \ No newline at end of file +/samples/quickstart/build/ +/samples/custom-flows/build/ \ No newline at end of file diff --git a/README.md b/README.md index 0ef968f3..b9239bff 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,8 @@ **Clerk is Hiring!** -Would you like to work on Open Source software and help maintain this repository? [Apply today!](https://jobs.ashbyhq.com/clerk) +Would you like to work on Open Source software and help maintain this +repository? [Apply today!](https://jobs.ashbyhq.com/clerk) --- @@ -38,25 +39,32 @@ Would you like to work on Open Source software and help maintain this repository ## �🚀 Get Started with Clerk ### 1. Create a Clerk Application + 1. [Sign up for an account](https://dashboard.clerk.com/sign-up?utm_source=github&utm_medium=clerk_android_repo_readme) 2. Create an application in your Clerk dashboard 3. Copy your **Publishable Key** from the API Keys section ### 2. Install the SDK + Add the Clerk Android SDK to your project following the installation instructions below. ### 3. Initialize Clerk + Configure Clerk in your application class with your publishable key. ### 4. Add Authentication + Use Clerk's authentication methods to enable sign-up, sign-in, and user management. ## 🧑‍💻 Installation -The Clerk Android SDK is distributed via Maven Central. +The Clerk Android SDK is distributed via Maven Central. ### Add Repository -First, ensure you have added [mavenCentral](https://docs.gradle.org/current/userguide/declaring_repositories.html) to your project's `build.gradle(.kts)`: + +First, ensure you have +added [mavenCentral](https://docs.gradle.org/current/userguide/declaring_repositories.html) to your +project's `build.gradle(.kts)`: ```gradle repositories { @@ -65,6 +73,7 @@ repositories { ``` ### Add Dependency + Add the Clerk SDK to your application's dependencies: ```gradle @@ -74,19 +83,22 @@ dependencies { ``` **Kotlin DSL:** + ```kotlin dependencies { implementation("com.clerk:clerk-android:0.1.0") } ``` -> 💡 **Tip:** Check [Maven Central](https://central.sonatype.com/artifact/com.clerk/clerk-android) for the latest version. +> 💡 **Tip:** Check [Maven Central](https://central.sonatype.com/artifact/com.clerk/clerk-android) +> for the latest version. ## 🛠️ Usage ### Initialization -Before using any part of the SDK, you must call `Clerk.initialize()` in your Application class with your publishable key and application context: +Before using any part of the SDK, you must call `Clerk.initialize()` in your Application class with +your publishable key and application context: ```kotlin import com.clerk.Clerk @@ -94,7 +106,7 @@ import com.clerk.Clerk class YourApplication : Application() { override fun onCreate() { super.onCreate() - + Clerk.initialize( context = this, publishableKey = "pk_test_..." // Your publishable key from Clerk Dashboard @@ -104,10 +116,10 @@ class YourApplication : Application() { ``` **Don't forget to register your Application class in `AndroidManifest.xml`:** + ```xml - @@ -129,7 +141,9 @@ if (Clerk.user != null) { ### Authentication -All authentication functions follow a consistent parameter pattern where function parameters are exposed as data classes named after the function itself (e.g., `SignUp.Create` parameters are `SignUp.SignUpCreateParams`). +All authentication functions follow a consistent parameter pattern where function parameters are +exposed as data classes named after the function itself (e.g., `SignUp.Create` parameters are +`SignUp.SignUpCreateParams`). #### Sign Up with Email and Verification @@ -142,10 +156,10 @@ SignUp.create(SignUp.CreateParams.Standard(emailAddress = "user@example.com")) // Check if the SignUp needs the email address verified and send an OTP code via email if (signUp.unverifiedFields.contains("email_address")) { signUp.prepareVerification(SignUp.PrepareVerificationParams.EMAIL_CODE) - .onSuccess { + .onSuccess { // OTP sent successfully } - .onFailure { + .onFailure { // Handle error } } @@ -157,7 +171,7 @@ SignUp.create(SignUp.CreateParams.Standard(emailAddress = "user@example.com")) // After collecting the OTP from the user Clerk.signUp?.attemptVerification(SignUp.AttemptVerificationParams.EmailCode(code = "123456")) - .onSuccess { + .onSuccess { // User is signed in successfully } ``` @@ -171,7 +185,7 @@ var signIn: SignIn? = null // Create the sign in SignIn.create(SignIn.CreateParams.Strategy.EmailCode("email@example.com")) - .onSuccess { + .onSuccess { signIn = it // OTP code sent to email } @@ -217,17 +231,17 @@ import com.clerk.passkeys.CredentialType SignIn.authenticateWithGoogleCredentialManager( credentialTypes = listOf( - CredentialType.PASSKEY, - CredentialType.PASSWORD, + CredentialType.PASSKEY, + CredentialType.PASSWORD, CredentialType.GOOGLE ) ) -.onSuccess { - // Authentication successful -} -.onFailure { error -> - Log.e("Clerk", "Credential Manager auth failed: ${error.message}") -} + .onSuccess { + // Authentication successful + } + .onFailure { error -> + Log.e("Clerk", "Credential Manager auth failed: ${error.message}") + } ``` #### Forgot Password @@ -243,12 +257,12 @@ SignIn.create(SignIn.CreateParams.Strategy.EmailCode("user@example.com")) .onSuccess { verifiedSignIn -> // Set a new password to complete the process verifiedSignIn.resetPassword( - password = "newSecurePassword123!", + password = "newSecurePassword123!", signOutOfOtherSessions = true ) - .onSuccess { - // Password reset successful - } + .onSuccess { + // Password reset successful + } } } ``` @@ -273,10 +287,10 @@ Clerk.signOut() import com.clerk.User Clerk.user.update( - User.UpdateParams(firstName = "Walter", lastName = "Johnson")) - .onSuccess { - updatedUser -> // User updated - } + User.UpdateParams(firstName = "Walter", lastName = "Johnson") +) + .onSuccess { updatedUser -> // User updated + } ``` #### Update User Profile Image @@ -284,10 +298,10 @@ Clerk.user.update( ```kotlin // After getting a java.io.File object to upload val imageFile: File = // ... your image file -Clerk.user.setProfileImage(file = imageFile) - .onSuccess { - // Profile image updated successfully - } + Clerk.user.setProfileImage(file = imageFile) + .onSuccess { + // Profile image updated successfully + } ``` #### Add Phone Number @@ -336,16 +350,20 @@ Clerk.session.fetchToken().jwt.let { token -> // Use the token in your API requests val headers = mutableMapOf() headers["Authorization"] = "Bearer $token" - + // Make your authenticated API call // ... } ``` -## 📱 Example App - -This repository includes a complete example app demonstrating phone authentication with SMS OTP and social sign-in. The example app shows best practices for integrating Clerk into an Android application. +## 📱 Samples +`samples/quickstart`: This is a paired repo with the Android Quickstart guide. It provides a simple +example of how to integrate Clerk into an Android application, demonstrating user sign-up, sign-in, +and profile management. +`samples/custom-flows`: This is a paired repo with the Custom Flows guide. It showcases how to +implement custom authentication flows using Clerk, including advanced scenarios like multi-factor +authentication and reset password. 1. **Setup Clerk Account**: ```bash @@ -355,11 +373,12 @@ This repository includes a complete example app demonstrating phone authenticati ``` 2. **Configure Authentication Methods**: - - **Phone Authentication**: In Clerk Dashboard → **User & Authentication** → **Email, Phone, Username** - - Enable **Phone number** as a contact method - - Configure **SMS** verification method - - **Social Providers**: In Clerk Dashboard → **User & Authentication** → **Social Connections** - - Enable desired providers (Google, GitHub, Apple, etc.) + - **Phone Authentication**: In Clerk Dashboard → **User & Authentication** → **Email, Phone, + Username** + - Enable **Phone number** as a contact method + - Configure **SMS** verification method + - **Social Providers**: In Clerk Dashboard → **User & Authentication** → **Social Connections** + - Enable desired providers (Google, GitHub, Apple, etc.) 3. **Run the Example App**: ```bash @@ -384,16 +403,19 @@ For complete setup instructions, troubleshooting, and advanced configuration, se ### Common Issues **"Clerk not initialized" error:** + - Make sure you've called `Clerk.initialize()` in your Application class - Verify your Application class is registered in `AndroidManifest.xml` - Check that your publishable key is correct **"Missing CLERK_PUBLISHABLE_KEY" error:** + - Add your publishable key to `gradle.properties` - Verify the key format starts with `pk_test_` or `pk_live_` - Ensure the key is valid and from the correct Clerk application **ProGuard/R8 issues:** + - The SDK includes ProGuard rules automatically - If you encounter issues, check the `proguard-rules.pro` file in the SDK @@ -412,29 +434,31 @@ For complete setup instructions, troubleshooting, and advanced configuration, se ## ✅ Supported Features -| Feature | Android Support | Notes | -| --- | :---: | --- | -| Email/Phone/Username Authentication | ✅ | Full support | -| Email Code Verification | ✅ | OTP via email | -| SMS Code Verification | ✅ | OTP via SMS | -| Multi-Factor Authentication (TOTP / SMS) | ✅ | TOTP and SMS | -| Sign in / Sign up with OAuth | ✅ | Google, GitHub, Apple, etc. | -| Native Sign in with Google | ✅ | Google One Tap | -| Session Management | ✅ | Full session lifecycle | -| Forgot Password | ✅ | Email-based reset | -| User Management | ✅ | Profile, phone, email management | -| Passkeys | ✅ | WebAuthn support | -| Enterprise SSO (SAML) | ✅ | Enterprise authentication | -| Device Attestation | ✅ | Android Play Integrity | -| Multi-Session Applications | ❌ | Coming soon | -| Organizations | ❌ | Coming soon | -| Prebuilt UI Components | ❌ | Coming soon | -| Magic Links | ❌ | Planned | -| Web3 Wallet | ❌ | Planned | +| Feature | Android Support | Notes | +|------------------------------------------|:---------------:|----------------------------------| +| Email/Phone/Username Authentication | ✅ | Full support | +| Email Code Verification | ✅ | OTP via email | +| SMS Code Verification | ✅ | OTP via SMS | +| Multi-Factor Authentication (TOTP / SMS) | ✅ | TOTP and SMS | +| Sign in / Sign up with OAuth | ✅ | Google, GitHub, Apple, etc. | +| Native Sign in with Google | ✅ | Google One Tap | +| Session Management | ✅ | Full session lifecycle | +| Forgot Password | ✅ | Email-based reset | +| User Management | ✅ | Profile, phone, email management | +| Passkeys | ✅ | WebAuthn support | +| Enterprise SSO (SAML) | ✅ | Enterprise authentication | +| Device Attestation | ✅ | Android Play Integrity | +| Multi-Session Applications | ❌ | Coming soon | +| Organizations | ❌ | Coming soon | +| Prebuilt UI Components | ❌ | Coming soon | +| Magic Links | ❌ | Planned | +| Web3 Wallet | ❌ | Planned | ## 🤝 Contributing -We welcome contributions! Please see our [Contributing Guidelines](https://github.com/clerk/clerk-android/blob/main/CONTRIBUTING.md) for details. +We welcome contributions! Please see +our [Contributing Guidelines](https://github.com/clerk/clerk-android/blob/main/CONTRIBUTING.md) for +details. ### Development Setup diff --git a/build.gradle.kts b/build.gradle.kts index 8d1b0f40..8bf0895c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,6 +13,7 @@ plugins { alias(libs.plugins.jetbrains.kotlin.jvm) apply false alias(libs.plugins.mavenPublish) alias(libs.plugins.dokka) + alias(libs.plugins.kotlin.compose) apply false } val projectLibs = extensions.getByType().named("libs") diff --git a/gradle.properties b/gradle.properties index beaf4500..3b381067 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,5 +17,5 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 android.useAndroidX=true kotlin.code.style=official android.nonTransitiveRClass=true -SAMPLE_APP_CLERK_PUBLISHABLE_KEY= +CUSTOM_FLOWS_CLERK_PUBLISHABLE_KEY= QUICKSTART_CLERK_PUBLISHABLE_KEY= diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c65fbb95..bb2f50ba 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -26,6 +26,9 @@ okhttp = "5.1.0" retrofit = "3.0.0" sortDependencies = "0.14" spotless = "7.2.1" +coreKtx = "1.16.0" +junit = "1.2.1" +espressoCore = "3.6.1" [libraries] activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityKtx" } @@ -74,6 +77,11 @@ retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit retrofit-kotlinx = { module = "com.squareup.retrofit2:converter-kotlinx-serialization", version.ref = "retrofit" } robolectric = "org.robolectric:robolectric:4.15.1" versioning-plugin = { module = "org.jetbrains.dokka:versioning-plugin", version.ref = "dokka" } +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } +androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junit" } +androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } +androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } +androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } diff --git a/samples/custom-flows/.gitignore b/samples/custom-flows/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/samples/custom-flows/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/samples/custom-flows/build.gradle.kts b/samples/custom-flows/build.gradle.kts new file mode 100644 index 00000000..be9c7d6f --- /dev/null +++ b/samples/custom-flows/build.gradle.kts @@ -0,0 +1,59 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +private val customFlowsKey = "CUSTOM_FLOWS_CLERK_PUBLISHABLE_KEY" + +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.compose) +} + +android { + namespace = "com.clerk.customflows" + compileSdk = 36 + + defaultConfig { + applicationId = "com.clerk.customflows" + minSdk = 24 + targetSdk = 36 + versionCode = 1 + versionName = "1.0" + + val isCI = System.getenv("CI")?.toBoolean() == true + val clerkPublishableKey = project.findProperty(customFlowsKey) as String? + + if (clerkPublishableKey.isNullOrEmpty() && !isCI) { + throw GradleException("Missing $customFlowsKey in gradle.properties") + } + + val keyValue = clerkPublishableKey ?: "pk_test_placeholder_for_ci" + buildConfigField("String", customFlowsKey, "\"${keyValue}\"") + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlin { compilerOptions { jvmTarget.set(JvmTarget.JVM_17) } } + + buildFeatures { + compose = true + buildConfig = true + } +} + +dependencies { + implementation(platform(libs.compose.bom)) + implementation(libs.activity.compose) + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime) + implementation(libs.androidx.ui) + implementation(libs.androidx.ui.graphics) + implementation(libs.androidx.ui.tooling.preview) + implementation(libs.material3) + implementation(projects.clerk.source) + + debugImplementation(libs.androidx.ui.test.manifest) + debugImplementation(libs.androidx.ui.tooling) +} diff --git a/samples/custom-flows/proguard-rules.pro b/samples/custom-flows/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/samples/custom-flows/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/samples/custom-flows/src/main/AndroidManifest.xml b/samples/custom-flows/src/main/AndroidManifest.xml new file mode 100644 index 00000000..f18224b7 --- /dev/null +++ b/samples/custom-flows/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/custom-flows/src/main/ic_launcher-playstore.png b/samples/custom-flows/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..29d5a55cd19376a30c0a7ad9d95a632abb5ed25f GIT binary patch literal 192961 zcmW)HX;>22|2=Ao=9XHbf#Q~aXDXG<1r?|)t*LYxXUZu}l*-H%aREi#GBpt@r!qI% zmtTc4DY>Pf2w5&!O`y1-7-((~hA622p8u-`*-@Sj%!fLy?lgZux)pPhS?F@EmMU-VJh1YY)ZlfjMay@B~o zy7Dbfzx{5Y$GW^pcaziesWxvv=|S@!)r+skr1YUv1979Cvoi~Cw5W?zR3QH}jsoW* z7GM{i{`KR}Nc`IX(s}jQ$o2o`Pm#Xf6V|PN>tb&F=pfA}Z=g1$8^b+rYaiX9PW+hx zpW%xGsz`NXQREE)`K;5LDd8|zvMxx}Tp$X|>WYv{X27hnmupWp?wOV?7S#;>=I`h{ z7Z|1WIar(BZUgt6sqwIViqla z>AKAbMmf^H*eA|nikjs7kuB7;Yux<0$dzrX5nKsE3UKY+_!Zb}YVs`~`?(9bQEtJ# zW|8^{RD*tKSt9*&toRis(x7R=DS^&IPltP0Zg6ea(D#hx{uB{dDDa@uUoB;2 zlP8<^;x&z>{+VYNrQYIrnxKzQ&YtQeO`trL^+jc;FM{dwf6be_5&r;7-1xmG6z6+K zsFg7`qtff`H(9`Ha8;qd_;&iGJXN@#KH-2>>3ExYYg+wGQ(1Sq1HJBMQ*E)CA9)t3 z5LeSDqjuj#e*c!~0V*qRr@tSm0>}GF$>Q3|`zM9B6Rm^k|iJK9dZZxb*E1;!T!j}gK2|a>BD}17h4?E z_M^LM&;1BX$qkl%R3^NF_j%4wQ+%8QClz6sfkrI)z4n)-6F{bpCDEQ8)fN%pxLoc= zjflD<@6%Sc4X^4wnd-keM>wDZ0sCfHP-h#kEf}Kjq!RvzjeO#$#K!<%^>^O%C_ zL!xurLZl5Vmkq_9wuYoZSdhBu$zG5uRietgJo_KKwJSe6*td!xNwxQussYq_2&dHsLod9p2M!$wRl0z2Pi z|E-_vK&Io%oOgK8ES3 zBYHsnklJ{@=JZp;xxH5;xWY1~wHiOUh1P!?esRXno3Y4i5nfP9Y}% zZ{EJsyOHHX4xUqO>GGKs6_FeS$;RjK^F*X9s5HS09(cNQ)4AvyR-WT z-UTnj9Oo{FyU9$c0Wo8|$EMIJv
  • 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≀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


    k;X#1Y;<$@K}q=I_&+c}aH*A5O#WZh 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 YyzeXlTx63!i0p;yC3mOl3xUc12RHJuQ~&?~ literal 0 HcmV?d00001 diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/CustomFlowsApplication.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/CustomFlowsApplication.kt new file mode 100644 index 00000000..d3cfc81d --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/CustomFlowsApplication.kt @@ -0,0 +1,16 @@ +package com.clerk.customflows + +import android.app.Application +import com.clerk.Clerk +import com.clerk.ClerkConfigurationOptions + +class CustomFlowsApplication : Application() { + override fun onCreate() { + super.onCreate() + Clerk.initialize( + this, + publishableKey = BuildConfig.CUSTOM_FLOWS_CLERK_PUBLISHABLE_KEY, + options = ClerkConfigurationOptions(enableDebugMode = true), + ) + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/MainActivity.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/MainActivity.kt new file mode 100644 index 00000000..1495e425 --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/MainActivity.kt @@ -0,0 +1,129 @@ +package com.clerk.customflows + +import android.content.Intent +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.activity.viewModels +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.clerk.customflows.addemail.AddEmailActivity +import com.clerk.customflows.addphone.AddPhoneActivity +import com.clerk.customflows.emailpassword.mfa.MFASignInActivity +import com.clerk.customflows.emailpassword.signin.EmailPasswordSignInActivity +import com.clerk.customflows.emailpassword.signup.EmailPasswordSignUpActivity +import com.clerk.customflows.forgotpassword.emailaddress.ForgotPasswordEmailViewModel +import com.clerk.customflows.forgotpassword.phone.ForgotPasswordPhoneNumberActivity +import com.clerk.customflows.oauth.OAuthActivity +import com.clerk.customflows.ui.theme.ClerkTheme + +class MainActivity : ComponentActivity() { + val viewModel: MainViewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContent { + val state by viewModel.uiState.collectAsStateWithLifecycle() + ClerkTheme { + Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + when (state) { + MainViewModel.UiState.Loading -> CircularProgressIndicator() + + MainViewModel.UiState.SignedIn -> + SignedInContent(modifier = Modifier.padding(innerPadding), viewModel::signOut) + + MainViewModel.UiState.SignedOut -> + SignedOutContent(modifier = Modifier.padding(innerPadding)) + } + } + } + } + } + } +} + +@Composable +private fun SignedInContent(modifier: Modifier = Modifier, onSignOut: () -> Unit) { + val context = LocalContext.current + Column( + modifier = Modifier.fillMaxSize().padding(horizontal = 24.dp).then(modifier), + verticalArrangement = Arrangement.spacedBy(24.dp, alignment = Alignment.CenterVertically), + ) { + LaunchCustomFlowButton(buttonText = stringResource(R.string.add_email_address)) { + context.startActivity(Intent(context, AddEmailActivity::class.java)) + } + LaunchCustomFlowButton(buttonText = stringResource(R.string.add_phone_number)) { + context.startActivity(Intent(context, AddPhoneActivity::class.java)) + } + Button( + shape = RoundedCornerShape(8.dp), + colors = ButtonDefaults.buttonColors(containerColor = Color.Red), + modifier = Modifier.fillMaxWidth().height(48.dp), + onClick = { onSignOut() }, + ) { + Text(stringResource(R.string.sign_out), color = Color.White) + } + } +} + +@Composable +private fun SignedOutContent(modifier: Modifier = Modifier) { + val context = LocalContext.current + Column( + modifier = Modifier.fillMaxSize().padding(horizontal = 24.dp).then(modifier), + verticalArrangement = Arrangement.spacedBy(24.dp, alignment = Alignment.CenterVertically), + ) { + LaunchCustomFlowButton(buttonText = stringResource(R.string.email_password_sign_in)) { + context.startActivity(Intent(context, EmailPasswordSignInActivity::class.java)) + } + LaunchCustomFlowButton(buttonText = stringResource(R.string.email_password_sign_up)) { + context.startActivity(Intent(context, EmailPasswordSignUpActivity::class.java)) + } + LaunchCustomFlowButton(buttonText = stringResource(R.string.email_password_mfa)) { + context.startActivity(Intent(context, MFASignInActivity::class.java)) + } + LaunchCustomFlowButton(buttonText = stringResource(R.string.sign_in_with_oauth)) { + context.startActivity(Intent(context, OAuthActivity::class.java)) + } + LaunchCustomFlowButton(buttonText = stringResource(R.string.reset_password_phone)) { + context.startActivity(Intent(context, ForgotPasswordPhoneNumberActivity::class.java)) + } + LaunchCustomFlowButton(buttonText = stringResource(R.string.reset_password_email)) { + context.startActivity(Intent(context, ForgotPasswordEmailViewModel::class.java)) + } + } +} + +@Composable +fun LaunchCustomFlowButton(modifier: Modifier = Modifier, buttonText: String, onClick: () -> Unit) { + Button( + shape = RoundedCornerShape(8.dp), + modifier = Modifier.fillMaxWidth().height(48.dp).then(modifier), + onClick = onClick, + ) { + Text(buttonText) + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/MainViewModel.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/MainViewModel.kt new file mode 100644 index 00000000..a1e88776 --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/MainViewModel.kt @@ -0,0 +1,51 @@ +package com.clerk.customflows + +import android.util.Log +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.clerk.Clerk +import com.clerk.network.serialization.onFailure +import com.clerk.network.serialization.onSuccess +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.launch + +class MainViewModel : ViewModel() { + + private val _uiState = MutableStateFlow(UiState.Loading) + val uiState = _uiState.asStateFlow() + + init { + combine(Clerk.isInitialized, Clerk.user) { isInitialized, user -> + Log.e("QQQ", "isInitialized: $isInitialized, user: $user") + _uiState.value = + when { + !isInitialized -> UiState.Loading + user != null -> UiState.SignedIn + else -> UiState.SignedOut + } + } + .launchIn(viewModelScope) + } + + fun signOut() { + viewModelScope.launch { + Clerk.signOut() + .onSuccess { _uiState.value = UiState.SignedOut } + .onFailure { + // See https://clerk.com/docs/custom-flows/error-handling + // for more info on error handling + } + } + } + + sealed interface UiState { + data object SignedIn : UiState + + data object SignedOut : UiState + + data object Loading : UiState + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/addemail/AddEmailActivity.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/addemail/AddEmailActivity.kt new file mode 100644 index 00000000..f052bf44 --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/addemail/AddEmailActivity.kt @@ -0,0 +1,87 @@ +package com.clerk.customflows.addemail + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.viewModels +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.clerk.emailaddress.EmailAddress + +class AddEmailActivity : ComponentActivity() { + val viewModel: AddEmailViewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + val state by viewModel.uiState.collectAsStateWithLifecycle() + AddEmailView( + state = state, + onCreateEmailAddress = viewModel::createEmailAddress, + onVerifyCode = viewModel::verifyCode, + ) + } + } +} + +@Composable +fun AddEmailView( + state: AddEmailViewModel.UiState, + onCreateEmailAddress: (String) -> Unit, + onVerifyCode: (String, EmailAddress) -> Unit, +) { + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + when (state) { + AddEmailViewModel.UiState.NeedsVerification -> { + InputContentView(buttonText = "Continue", placeholder = "Enter email address") { + onCreateEmailAddress(it) + } + } + + AddEmailViewModel.UiState.Verified -> Text("Verified!") + + is AddEmailViewModel.UiState.Verifying -> { + InputContentView(buttonText = "Verify", placeholder = "Enter code") { + onVerifyCode(it, state.emailAddress) + } + } + + AddEmailViewModel.UiState.Loading -> CircularProgressIndicator() + AddEmailViewModel.UiState.SignedOut -> Text("You must be signed in to add an email address.") + } + } +} + +@Composable +fun InputContentView( + buttonText: String, + placeholder: String, + modifier: Modifier = Modifier, + onClick: (String) -> Unit, +) { + var input by remember { mutableStateOf("") } + Column(horizontalAlignment = Alignment.CenterHorizontally, modifier = modifier) { + TextField( + modifier = Modifier.padding(bottom = 16.dp), + value = input, + onValueChange = { input = it }, + placeholder = { Text(placeholder) }, + ) + Button(onClick = { onClick(input) }) { Text(buttonText) } + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/addemail/AddEmailViewModel.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/addemail/AddEmailViewModel.kt new file mode 100644 index 00000000..b348ce8f --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/addemail/AddEmailViewModel.kt @@ -0,0 +1,85 @@ +package com.clerk.customflows.addemail + +import android.util.Log +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.clerk.Clerk +import com.clerk.emailaddress.EmailAddress +import com.clerk.emailaddress.attemptVerification +import com.clerk.emailaddress.prepareVerification +import com.clerk.network.serialization.flatMap +import com.clerk.network.serialization.longErrorMessageOrNull +import com.clerk.network.serialization.onFailure +import com.clerk.network.serialization.onSuccess +import com.clerk.user.createEmailAddress +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.launch + +class AddEmailViewModel : ViewModel() { + private val _uiState = MutableStateFlow(UiState.NeedsVerification) + val uiState = _uiState.asStateFlow() + + init { + combine(Clerk.isInitialized, Clerk.user) { isInitialized, user -> + _uiState.value = + when { + !isInitialized -> UiState.Loading + user == null -> UiState.SignedOut + else -> UiState.NeedsVerification + } + } + .launchIn(viewModelScope) + } + + fun createEmailAddress(emailAddress: String) { + val user = requireNotNull(Clerk.user.value) + + // Add an unverified email address to the user, + // then send the user an email with the verification code + viewModelScope.launch { + user + .createEmailAddress(emailAddress) + .flatMap { it.prepareVerification(EmailAddress.PrepareVerificationParams.EmailCode()) } + .onSuccess { + // Update the state to show that the email address has been created + // and that the user needs to verify the email address + _uiState.value = UiState.Verifying(it) + } + .onFailure { + Log.e( + "AddEmailViewModel", + "Failed to create email address and prepare verification: ${it.longErrorMessageOrNull}", + ) + } + } + } + + fun verifyCode(code: String, newEmailAddress: EmailAddress) { + viewModelScope.launch { + newEmailAddress + .attemptVerification(code) + .onSuccess { + // Update the state to show that the email addresshas been verified + _uiState.value = UiState.Verified + } + .onFailure { + Log.e("AddEmailViewModel", "Failed to verify email address: ${it.longErrorMessageOrNull}") + } + } + } + + sealed interface UiState { + data object Loading : UiState + + data object NeedsVerification : UiState + + data class Verifying(val emailAddress: EmailAddress) : UiState + + data object Verified : UiState + + data object SignedOut : UiState + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/addphone/AddPhoneActivity.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/addphone/AddPhoneActivity.kt new file mode 100644 index 00000000..ad6abd49 --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/addphone/AddPhoneActivity.kt @@ -0,0 +1,87 @@ +package com.clerk.customflows.addphone + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.viewModels +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.clerk.phonenumber.PhoneNumber + +class AddPhoneActivity : ComponentActivity() { + val viewModel: AddPhoneViewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + val state by viewModel.uiState.collectAsStateWithLifecycle() + AddPhoneView( + state = state, + onCreatePhoneNumber = viewModel::createPhoneNumber, + onVerifyCode = viewModel::verifyCode, + ) + } + } +} + +@Composable +fun AddPhoneView( + state: AddPhoneViewModel.UiState, + onCreatePhoneNumber: (String) -> Unit, + onVerifyCode: (String, PhoneNumber) -> Unit, +) { + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + when (state) { + AddPhoneViewModel.UiState.NeedsVerification -> { + InputContentView(buttonText = "Continue", placeholder = "Enter phone number") { + onCreatePhoneNumber(it) + } + } + + AddPhoneViewModel.UiState.Verified -> Text("Verified!") + + is AddPhoneViewModel.UiState.Verifying -> { + InputContentView(buttonText = "Verify", placeholder = "Enter code") { + onVerifyCode(it, state.phoneNumber) + } + } + + AddPhoneViewModel.UiState.Loading -> CircularProgressIndicator() + AddPhoneViewModel.UiState.SignedOut -> Text("You must be signed in to add a phone number.") + } + } +} + +@Composable +fun InputContentView( + buttonText: String, + placeholder: String, + modifier: Modifier = Modifier, + onClick: (String) -> Unit, +) { + var input by remember { mutableStateOf("") } + Column(horizontalAlignment = Alignment.CenterHorizontally, modifier = modifier) { + TextField( + modifier = Modifier.padding(bottom = 16.dp), + value = input, + onValueChange = { input = it }, + placeholder = { Text(placeholder) }, + ) + Button(onClick = { onClick(input) }) { Text(buttonText) } + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/addphone/AddPhoneViewModel.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/addphone/AddPhoneViewModel.kt new file mode 100644 index 00000000..840c59f4 --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/addphone/AddPhoneViewModel.kt @@ -0,0 +1,85 @@ +package com.clerk.customflows.addphone + +import android.util.Log +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.clerk.Clerk +import com.clerk.network.serialization.flatMap +import com.clerk.network.serialization.longErrorMessageOrNull +import com.clerk.network.serialization.onFailure +import com.clerk.network.serialization.onSuccess +import com.clerk.phonenumber.PhoneNumber +import com.clerk.phonenumber.attemptVerification +import com.clerk.phonenumber.prepareVerification +import com.clerk.user.createPhoneNumber +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.launch + +class AddPhoneViewModel : ViewModel() { + private val _uiState = MutableStateFlow(UiState.NeedsVerification) + val uiState = _uiState.asStateFlow() + + init { + combine(Clerk.isInitialized, Clerk.user) { isInitialized, user -> + _uiState.value = + when { + !isInitialized -> UiState.Loading + user == null -> UiState.SignedOut + else -> UiState.NeedsVerification + } + } + .launchIn(viewModelScope) + } + + fun createPhoneNumber(phoneNumber: String) { + val user = requireNotNull(Clerk.user.value) + + // Add an unverified phone number to the user, + // then send the user an SMS with the verification code + viewModelScope.launch { + user + .createPhoneNumber(phoneNumber) + .flatMap { it.prepareVerification() } + .onSuccess { + // Update the state to show that the phone number has been created + // and that the user needs to verify the phone number + _uiState.value = UiState.Verifying(it) + } + .onFailure { + Log.e( + "AddPhoneViewModel", + "Failed to create phone number and prepare verification: ${it.longErrorMessageOrNull}", + ) + } + } + } + + fun verifyCode(code: String, newPhoneNumber: PhoneNumber) { + viewModelScope.launch { + newPhoneNumber + .attemptVerification(code) + .onSuccess { + // Update the state to show that the phone number has been verified + _uiState.value = UiState.Verified + } + .onFailure { + Log.e("AddPhoneViewModel", "Failed to verify phone number: ${it.longErrorMessageOrNull}") + } + } + } + + sealed interface UiState { + data object Loading : UiState + + data object NeedsVerification : UiState + + data class Verifying(val phoneNumber: PhoneNumber) : UiState + + data object Verified : UiState + + data object SignedOut : UiState + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/mfa/MFASignInActivity.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/mfa/MFASignInActivity.kt new file mode 100644 index 00000000..ad8d885b --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/mfa/MFASignInActivity.kt @@ -0,0 +1,71 @@ +package com.clerk.customflows.emailpassword.mfa + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.viewModels +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.collectAsStateWithLifecycle + +class MFASignInActivity : ComponentActivity() { + val viewModel: MFASignInViewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + val state by viewModel.uiState.collectAsStateWithLifecycle() + MFASignInView(state = state, onSubmit = viewModel::submit, onVerify = viewModel::verify) + } + } +} + +@Composable +fun MFASignInView( + state: MFASignInViewModel.UiState, + onSubmit: (String, String) -> Unit, + onVerify: (String) -> Unit, +) { + var email by remember { mutableStateOf("") } + var password by remember { mutableStateOf("") } + var code by remember { mutableStateOf("") } + + Column( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(16.dp, Alignment.CenterVertically), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + when (state) { + MFASignInViewModel.UiState.NeedsSecondFactor -> { + TextField(value = code, onValueChange = { code = it }, placeholder = { Text("Code") }) + Button(onClick = { onVerify(code) }) { Text("Submit") } + } + MFASignInViewModel.UiState.Unverified -> { + TextField(value = email, onValueChange = { email = it }, placeholder = { Text("Email") }) + TextField( + value = password, + onValueChange = { password = it }, + placeholder = { Text("Password") }, + visualTransformation = PasswordVisualTransformation(), + ) + Button(onClick = { onSubmit(email, password) }) { Text("Next") } + } + MFASignInViewModel.UiState.Verified -> { + Text("Verified") + } + } + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/mfa/MFASignInViewModel.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/mfa/MFASignInViewModel.kt new file mode 100644 index 00000000..2ec53a32 --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/mfa/MFASignInViewModel.kt @@ -0,0 +1,63 @@ +package com.clerk.customflows.emailpassword.mfa + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.clerk.Clerk +import com.clerk.network.serialization.onFailure +import com.clerk.network.serialization.onSuccess +import com.clerk.signin.SignIn +import com.clerk.signin.attemptSecondFactor +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch + +class MFASignInViewModel : ViewModel() { + private val _uiState = MutableStateFlow(UiState.Unverified) + val uiState = _uiState.asStateFlow() + + fun submit(email: String, password: String) { + viewModelScope.launch { + SignIn.create(SignIn.CreateParams.Strategy.Password(identifier = email, password = password)) + .onSuccess { + if (it.status == SignIn.Status.NEEDS_SECOND_FACTOR) { + // Display TOTP Form + _uiState.value = UiState.NeedsSecondFactor + } else { + // If the status is not needsSecondFactor, check why. User may need to + // complete different steps. + } + } + .onFailure { + // See https://clerk.com/docs/custom-flows/error-handling + // for more info on error handling + } + } + } + + fun verify(code: String) { + val inProgressSignIn = Clerk.signIn ?: return + viewModelScope.launch { + inProgressSignIn + .attemptSecondFactor(SignIn.AttemptSecondFactorParams.TOTP(code)) + .onSuccess { + if (it.status == SignIn.Status.COMPLETE) { + // User is now signed in and verified. + // You can navigate to the next screen or perform other actions. + _uiState.value = UiState.Verified + } + } + .onFailure { + // See https://clerk.com/docs/custom-flows/error-handling + // for more info on error handling + } + } + } + + sealed interface UiState { + data object Unverified : UiState + + data object Verified : UiState + + data object NeedsSecondFactor : UiState + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signin/EmailPasswordSignInActivity.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signin/EmailPasswordSignInActivity.kt new file mode 100644 index 00000000..4cef8e97 --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signin/EmailPasswordSignInActivity.kt @@ -0,0 +1,75 @@ +package com.clerk.customflows.emailpassword.signin + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.viewModels +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.clerk.Clerk + +class EmailPasswordSignInActivity : ComponentActivity() { + + val viewModel: EmailPasswordSignInViewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + val state by viewModel.uiState.collectAsStateWithLifecycle() + EmailPasswordSignInView(state = state, onSubmit = viewModel::submit) + } + } +} + +@Composable +fun EmailPasswordSignInView( + state: EmailPasswordSignInViewModel.EmailPasswordSignInUiState, + onSubmit: (String, String) -> Unit, +) { + var email by remember { mutableStateOf("") } + var password by remember { mutableStateOf("") } + + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + when (state) { + EmailPasswordSignInViewModel.EmailPasswordSignInUiState.SignedOut -> { + Column( + verticalArrangement = Arrangement.spacedBy(16.dp, Alignment.CenterVertically), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + TextField(value = email, onValueChange = { email = it }, label = { Text("Email") }) + TextField( + value = password, + onValueChange = { password = it }, + visualTransformation = PasswordVisualTransformation(), + label = { Text("Password") }, + ) + Button(onClick = { onSubmit(email, password) }) { Text("Sign in") } + } + } + EmailPasswordSignInViewModel.EmailPasswordSignInUiState.SignedIn -> { + Text("Current session: ${Clerk.session?.id}") + } + + EmailPasswordSignInViewModel.EmailPasswordSignInUiState.Loading -> + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + CircularProgressIndicator() + } + } + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signin/EmailPasswordSignInViewModel.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signin/EmailPasswordSignInViewModel.kt new file mode 100644 index 00000000..46b560a3 --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signin/EmailPasswordSignInViewModel.kt @@ -0,0 +1,52 @@ +package com.clerk.customflows.emailpassword.signin + +import android.util.Log +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.clerk.Clerk +import com.clerk.network.serialization.onFailure +import com.clerk.network.serialization.onSuccess +import com.clerk.signin.SignIn +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.launch + +class EmailPasswordSignInViewModel : ViewModel() { + private val _uiState = + MutableStateFlow(EmailPasswordSignInUiState.Loading) + val uiState = _uiState.asStateFlow() + + init { + combine(Clerk.user, Clerk.isInitialized) { user, isInitialized -> + Log.e("EmailPasswordSignInViewModel", "combine: $user, $isInitialized") + _uiState.value = + when { + !isInitialized -> EmailPasswordSignInUiState.Loading + user == null -> EmailPasswordSignInUiState.SignedOut + else -> EmailPasswordSignInUiState.SignedIn + } + } + .launchIn(viewModelScope) + } + + fun submit(email: String, password: String) { + viewModelScope.launch { + SignIn.create(SignIn.CreateParams.Strategy.Password(identifier = email, password = password)) + .onSuccess { _uiState.value = EmailPasswordSignInUiState.SignedIn } + .onFailure { + // See https://clerk.com/docs/custom-flows/error-handling + // for more info on error handling + } + } + } + + sealed interface EmailPasswordSignInUiState { + data object Loading : EmailPasswordSignInUiState + + data object SignedOut : EmailPasswordSignInUiState + + data object SignedIn : EmailPasswordSignInUiState + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signup/EmailPasswordSignUpActivity.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signup/EmailPasswordSignUpActivity.kt new file mode 100644 index 00000000..1c40f973 --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signup/EmailPasswordSignUpActivity.kt @@ -0,0 +1,89 @@ +package com.clerk.customflows.emailpassword.signup + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.viewModels +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.collectAsStateWithLifecycle + +class EmailPasswordSignUpActivity : ComponentActivity() { + + val viewModel: EmailPasswordSignUpViewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + val state by viewModel.uiState.collectAsStateWithLifecycle() + EmailPasswordSignInView( + state = state, + onSubmit = viewModel::submit, + onVerify = viewModel::verify, + ) + } + } +} + +@Composable +fun EmailPasswordSignInView( + state: EmailPasswordSignUpViewModel.EmailPasswordSignUpUiState, + onSubmit: (String, String) -> Unit, + onVerify: (String) -> Unit, +) { + var email by remember { mutableStateOf("") } + var password by remember { mutableStateOf("") } + var code by remember { mutableStateOf("") } + + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + when (state) { + EmailPasswordSignUpViewModel.EmailPasswordSignUpUiState.Unverified -> { + Column( + verticalArrangement = Arrangement.spacedBy(16.dp, Alignment.CenterVertically), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + TextField(value = email, onValueChange = { email = it }, label = { Text("Email") }) + TextField( + value = password, + onValueChange = { password = it }, + visualTransformation = PasswordVisualTransformation(), + label = { Text("Password") }, + ) + Button(onClick = { onSubmit(email, password) }) { Text("Next") } + } + } + EmailPasswordSignUpViewModel.EmailPasswordSignUpUiState.Verified -> { + Text("Verified!") + } + EmailPasswordSignUpViewModel.EmailPasswordSignUpUiState.Verifying -> { + Column( + verticalArrangement = Arrangement.spacedBy(16.dp, Alignment.CenterVertically), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + TextField( + value = code, + onValueChange = { code = it }, + label = { Text("Enter your verification code") }, + ) + Button(onClick = { onVerify(code) }) { Text("Verify") } + } + } + EmailPasswordSignUpViewModel.EmailPasswordSignUpUiState.Loading -> CircularProgressIndicator() + } + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signup/EmailPasswordSignUpViewModel.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signup/EmailPasswordSignUpViewModel.kt new file mode 100644 index 00000000..fa80e147 --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/emailpassword/signup/EmailPasswordSignUpViewModel.kt @@ -0,0 +1,69 @@ +package com.clerk.customflows.emailpassword.signup + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.clerk.Clerk +import com.clerk.network.serialization.flatMap +import com.clerk.network.serialization.onFailure +import com.clerk.network.serialization.onSuccess +import com.clerk.signup.SignUp +import com.clerk.signup.attemptVerification +import com.clerk.signup.prepareVerification +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.launch + +class EmailPasswordSignUpViewModel : ViewModel() { + private val _uiState = + MutableStateFlow(EmailPasswordSignUpUiState.Loading) + val uiState = _uiState.asStateFlow() + + init { + combine(Clerk.user, Clerk.isInitialized) { user, isInitialized -> + _uiState.value = + when { + !isInitialized -> EmailPasswordSignUpUiState.Loading + user != null -> EmailPasswordSignUpUiState.Verified + else -> EmailPasswordSignUpUiState.Unverified + } + } + .launchIn(viewModelScope) + } + + fun submit(email: String, password: String) { + viewModelScope.launch { + SignUp.create(SignUp.CreateParams.Standard(emailAddress = email, password = password)) + .flatMap { it.prepareVerification(SignUp.PrepareVerificationParams.Strategy.EmailCode()) } + .onSuccess { _uiState.value = EmailPasswordSignUpUiState.Verifying } + .onFailure { + // See https://clerk.com/docs/custom-flows/error-handling + // for more info on error handling + } + } + } + + fun verify(code: String) { + val inProgressSignUp = Clerk.signUp ?: return + viewModelScope.launch { + inProgressSignUp + .attemptVerification(SignUp.AttemptVerificationParams.EmailCode(code)) + .onSuccess { _uiState.value = EmailPasswordSignUpUiState.Verified } + .onFailure { + // See https://clerk.com/docs/custom-flows/error-handling + // for more info on error handling + } + } + } + + sealed interface EmailPasswordSignUpUiState { + data object Loading : EmailPasswordSignUpUiState + + data object Unverified : EmailPasswordSignUpUiState + + data object Verifying : EmailPasswordSignUpUiState + + data object Verified : EmailPasswordSignUpUiState + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/emailaddress/ForgotPasswordEmailActivity.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/emailaddress/ForgotPasswordEmailActivity.kt new file mode 100644 index 00000000..7d72be1d --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/emailaddress/ForgotPasswordEmailActivity.kt @@ -0,0 +1,106 @@ +package com.clerk.customflows.forgotpassword.emailaddress + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.viewModels +import androidx.compose.foundation.layout.Arrangement.Absolute.spacedBy +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.clerk.Clerk + +class ForgotPasswordEmailActivity : ComponentActivity() { + val viewModel: ForgotPasswordEmailViewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + val state by viewModel.uiState.collectAsStateWithLifecycle() + ForgotPasswordView( + state, + onVerify = viewModel::verify, + onSetNewPassword = viewModel::setNewPassword, + onCreateSignIn = viewModel::createSignIn, + ) + } + } +} + +@Composable +fun ForgotPasswordView( + state: ForgotPasswordEmailViewModel.UiState, + onVerify: (String) -> Unit, + onSetNewPassword: (String) -> Unit, + onCreateSignIn: (String) -> Unit, +) { + + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + when (state) { + ForgotPasswordEmailViewModel.UiState.Complete -> { + Text("Active session: ${Clerk.session?.id}") + } + + ForgotPasswordEmailViewModel.UiState.NeedsFirstFactor -> { + InputContent(placeholder = "Enter your code", buttonText = "Verify", onClick = onVerify) + } + ForgotPasswordEmailViewModel.UiState.NeedsNewPassword -> { + InputContent( + placeholder = "Enter your new password", + buttonText = "Set new password", + onClick = onSetNewPassword, + visualTransformation = PasswordVisualTransformation(), + ) + } + ForgotPasswordEmailViewModel.UiState.NeedsSecondFactor -> { + Text("2FA is required but this UI does not handle that") + } + ForgotPasswordEmailViewModel.UiState.SignedOut -> { + InputContent( + placeholder = "Enter your email address", + buttonText = "Forgot password?", + onClick = onCreateSignIn, + ) + } + + ForgotPasswordEmailViewModel.UiState.Loading -> CircularProgressIndicator() + } + } +} + +@Composable +fun InputContent( + placeholder: String, + buttonText: String, + visualTransformation: VisualTransformation = VisualTransformation.None, + onClick: (String) -> Unit, +) { + var value by remember { mutableStateOf("") } + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = spacedBy(16.dp, Alignment.CenterVertically), + ) { + TextField( + value = value, + onValueChange = { value = it }, + visualTransformation = visualTransformation, + placeholder = { Text(placeholder) }, + ) + Button(onClick = { onClick(value) }) { Text(buttonText) } + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/emailaddress/ForgotPasswordEmailViewModel.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/emailaddress/ForgotPasswordEmailViewModel.kt new file mode 100644 index 00000000..dc167587 --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/emailaddress/ForgotPasswordEmailViewModel.kt @@ -0,0 +1,115 @@ +package com.clerk.customflows.forgotpassword.emailaddress + +import android.util.Log +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.clerk.Clerk +import com.clerk.network.serialization.longErrorMessageOrNull +import com.clerk.network.serialization.onFailure +import com.clerk.network.serialization.onSuccess +import com.clerk.signin.SignIn +import com.clerk.signin.attemptFirstFactor +import com.clerk.signin.resetPassword +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.launch + +class ForgotPasswordEmailViewModel : ViewModel() { + private val _uiState = MutableStateFlow(UiState.Loading) + val uiState = _uiState.asStateFlow() + + init { + combine(Clerk.isInitialized, Clerk.user) { isInitialized, user -> + _uiState.value = + when { + !isInitialized -> UiState.Loading + user != null -> UiState.Complete + else -> UiState.SignedOut + } + } + .launchIn(viewModelScope) + } + + fun createSignIn(email: String) { + viewModelScope.launch { + SignIn.create(SignIn.CreateParams.Strategy.ResetPasswordEmailCode(identifier = email)) + .onSuccess { updateStateFromStatus(it.status) } + .onFailure { + // See https://clerk.com/docs/custom-flows/error-handling + // for more info on error handling + Log.e( + ForgotPasswordEmailViewModel::class.simpleName, + it.longErrorMessageOrNull, + it.throwable, + ) + } + } + } + + fun verify(code: String) { + val inProgressSignIn = Clerk.signIn ?: return + viewModelScope.launch { + inProgressSignIn + .attemptFirstFactor(SignIn.AttemptFirstFactorParams.ResetPasswordEmailCode(code)) + .onSuccess { updateStateFromStatus(it.status) } + .onFailure { + // See https://clerk.com/docs/custom-flows/error-handling + // for more info on error handling + Log.e( + ForgotPasswordEmailViewModel::class.simpleName, + it.longErrorMessageOrNull, + it.throwable, + ) + } + } + } + + fun setNewPassword(password: String) { + val inProgressSignIn = Clerk.signIn ?: return + viewModelScope.launch { + inProgressSignIn + .resetPassword(SignIn.ResetPasswordParams(password)) + .onSuccess { updateStateFromStatus(it.status) } + .onFailure { + // See https://clerk.com/docs/custom-flows/error-handling + // for more info on error handling + Log.e( + ForgotPasswordEmailViewModel::class.simpleName, + it.longErrorMessageOrNull, + it.throwable, + ) + } + } + } + + fun updateStateFromStatus(status: SignIn.Status) { + val state = + when (status) { + SignIn.Status.COMPLETE -> UiState.Complete + SignIn.Status.NEEDS_FIRST_FACTOR -> UiState.NeedsFirstFactor + SignIn.Status.NEEDS_SECOND_FACTOR -> UiState.NeedsSecondFactor + SignIn.Status.NEEDS_NEW_PASSWORD -> UiState.NeedsNewPassword + else -> { + UiState.SignedOut + } + } + + _uiState.value = state + } + + sealed interface UiState { + data object Loading : UiState + + data object SignedOut : UiState + + data object NeedsFirstFactor : UiState + + data object NeedsSecondFactor : UiState + + data object NeedsNewPassword : UiState + + data object Complete : UiState + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/phone/ForgotPasswordPhoneNumberActivity.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/phone/ForgotPasswordPhoneNumberActivity.kt new file mode 100644 index 00000000..38dd1ccb --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/phone/ForgotPasswordPhoneNumberActivity.kt @@ -0,0 +1,106 @@ +package com.clerk.customflows.forgotpassword.phone + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.viewModels +import androidx.compose.foundation.layout.Arrangement.Absolute.spacedBy +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.clerk.Clerk + +class ForgotPasswordPhoneNumberActivity : ComponentActivity() { + val viewModel: ForgotPasswordPhoneViewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + val state by viewModel.uiState.collectAsStateWithLifecycle() + ForgotPasswordView( + state, + onVerify = viewModel::verify, + onSetNewPassword = viewModel::setNewPassword, + onCreateSignIn = viewModel::createSignIn, + ) + } + } +} + +@Composable +fun ForgotPasswordView( + state: ForgotPasswordPhoneViewModel.UiState, + onVerify: (String) -> Unit, + onSetNewPassword: (String) -> Unit, + onCreateSignIn: (String) -> Unit, +) { + + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + when (state) { + ForgotPasswordPhoneViewModel.UiState.Complete -> { + Text("Active session: ${Clerk.session?.id}") + } + + ForgotPasswordPhoneViewModel.UiState.NeedsFirstFactor -> { + InputContent(placeholder = "Enter your code", buttonText = "Verify", onClick = onVerify) + } + ForgotPasswordPhoneViewModel.UiState.NeedsNewPassword -> { + InputContent( + placeholder = "Enter your new password", + buttonText = "Set new password", + onClick = onSetNewPassword, + visualTransformation = PasswordVisualTransformation(), + ) + } + ForgotPasswordPhoneViewModel.UiState.NeedsSecondFactor -> { + Text("2FA is required but this UI does not handle that") + } + ForgotPasswordPhoneViewModel.UiState.SignedOut -> { + InputContent( + placeholder = "Enter your phone number", + buttonText = "Forgot password?", + onClick = onCreateSignIn, + ) + } + + ForgotPasswordPhoneViewModel.UiState.Loading -> CircularProgressIndicator() + } + } +} + +@Composable +fun InputContent( + placeholder: String, + buttonText: String, + visualTransformation: VisualTransformation = VisualTransformation.None, + onClick: (String) -> Unit, +) { + var value by remember { mutableStateOf("") } + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = spacedBy(16.dp, Alignment.CenterVertically), + ) { + TextField( + value = value, + onValueChange = { value = it }, + visualTransformation = visualTransformation, + placeholder = { Text(placeholder) }, + ) + Button(onClick = { onClick(value) }) { Text(buttonText) } + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/phone/ForgotPasswordPhoneViewModel.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/phone/ForgotPasswordPhoneViewModel.kt new file mode 100644 index 00000000..94016355 --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/forgotpassword/phone/ForgotPasswordPhoneViewModel.kt @@ -0,0 +1,115 @@ +package com.clerk.customflows.forgotpassword.phone + +import android.util.Log +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.clerk.Clerk +import com.clerk.network.serialization.longErrorMessageOrNull +import com.clerk.network.serialization.onFailure +import com.clerk.network.serialization.onSuccess +import com.clerk.signin.SignIn +import com.clerk.signin.attemptFirstFactor +import com.clerk.signin.resetPassword +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.launch + +class ForgotPasswordPhoneViewModel : ViewModel() { + private val _uiState = MutableStateFlow(UiState.Loading) + val uiState = _uiState.asStateFlow() + + init { + combine(Clerk.isInitialized, Clerk.user) { isInitialized, user -> + _uiState.value = + when { + !isInitialized -> UiState.Loading + user != null -> UiState.Complete + else -> UiState.SignedOut + } + } + .launchIn(viewModelScope) + } + + fun createSignIn(phoneNumber: String) { + viewModelScope.launch { + SignIn.create(SignIn.CreateParams.Strategy.ResetPasswordPhoneCode(identifier = phoneNumber)) + .onSuccess { updateStateFromStatus(it.status) } + .onFailure { + // See https://clerk.com/docs/custom-flows/error-handling + // for more info on error handling + Log.e( + ForgotPasswordPhoneViewModel::class.simpleName, + it.longErrorMessageOrNull, + it.throwable, + ) + } + } + } + + fun verify(code: String) { + val inProgressSignIn = Clerk.signIn ?: return + viewModelScope.launch { + inProgressSignIn + .attemptFirstFactor(SignIn.AttemptFirstFactorParams.ResetPasswordPhoneCode(code)) + .onSuccess { updateStateFromStatus(it.status) } + .onFailure { + // See https://clerk.com/docs/custom-flows/error-handling + // for more info on error handling + Log.e( + ForgotPasswordPhoneViewModel::class.simpleName, + it.longErrorMessageOrNull, + it.throwable, + ) + } + } + } + + fun setNewPassword(password: String) { + val inProgressSignIn = Clerk.signIn ?: return + viewModelScope.launch { + inProgressSignIn + .resetPassword(SignIn.ResetPasswordParams(password)) + .onSuccess { updateStateFromStatus(it.status) } + .onFailure { + // See https://clerk.com/docs/custom-flows/error-handling + // for more info on error handling + Log.e( + ForgotPasswordPhoneViewModel::class.simpleName, + it.longErrorMessageOrNull, + it.throwable, + ) + } + } + } + + fun updateStateFromStatus(status: SignIn.Status) { + val state = + when (status) { + SignIn.Status.COMPLETE -> UiState.Complete + SignIn.Status.NEEDS_FIRST_FACTOR -> UiState.NeedsFirstFactor + SignIn.Status.NEEDS_SECOND_FACTOR -> UiState.NeedsSecondFactor + SignIn.Status.NEEDS_NEW_PASSWORD -> UiState.NeedsNewPassword + else -> { + UiState.SignedOut + } + } + + _uiState.value = state + } + + sealed interface UiState { + data object Loading : UiState + + data object SignedOut : UiState + + data object NeedsFirstFactor : UiState + + data object NeedsSecondFactor : UiState + + data object NeedsNewPassword : UiState + + data object Complete : UiState + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/oauth/OAuthActivity.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/oauth/OAuthActivity.kt new file mode 100644 index 00000000..da53b09c --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/oauth/OAuthActivity.kt @@ -0,0 +1,39 @@ +package com.clerk.customflows.oauth + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.viewModels +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Text +import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.clerk.sso.OAuthProvider + +class OAuthActivity : ComponentActivity() { + val viewModel: OAuthViewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + val state by viewModel.uiState.collectAsStateWithLifecycle() + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { + when (state) { + OAuthViewModel.UiState.Authenticated -> Text("Authenticated") + OAuthViewModel.UiState.Loading -> CircularProgressIndicator() + OAuthViewModel.UiState.SignedOut -> { + val provider = OAuthProvider.GOOGLE // Or .GITHUB, .SLACK etc. + Button(onClick = { viewModel.signInWithOAuth(provider) }) { + Text("Sign in with ${provider.name}") + } + } + } + } + } + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/oauth/OAuthViewModel.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/oauth/OAuthViewModel.kt new file mode 100644 index 00000000..e3bd2e1a --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/oauth/OAuthViewModel.kt @@ -0,0 +1,76 @@ +package com.clerk.customflows.oauth + +import android.util.Log +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.clerk.Clerk +import com.clerk.network.serialization.longErrorMessageOrNull +import com.clerk.network.serialization.onFailure +import com.clerk.network.serialization.onSuccess +import com.clerk.signin.SignIn +import com.clerk.signup.SignUp +import com.clerk.sso.OAuthProvider +import com.clerk.sso.sso.ResultType +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.launch + +class OAuthViewModel : ViewModel() { + private val _uiState = MutableStateFlow(UiState.Loading) + val uiState = _uiState.asStateFlow() + + init { + combine(Clerk.isInitialized, Clerk.user) { isInitialized, user -> + _uiState.value = + when { + !isInitialized -> UiState.Loading + user != null -> UiState.Authenticated + else -> UiState.SignedOut + } + } + .launchIn(viewModelScope) + } + + fun signInWithOAuth(provider: OAuthProvider) { + viewModelScope.launch { + SignIn.authenticateWithRedirect(SignIn.AuthenticateWithRedirectParams.OAuth(provider)) + .onSuccess { + when (it.resultType) { + ResultType.SIGN_IN -> { + // The OAuth flow resulted in a sign in + if (it.signIn?.status == SignIn.Status.COMPLETE) { + _uiState.value = UiState.Authenticated + } else { + // If the status is not complete, check why. User may need to + // complete further steps. + } + } + ResultType.SIGN_UP -> { + // The OAuth flow resulted in a sign up + if (it.signUp?.status == SignUp.Status.COMPLETE) { + _uiState.value = UiState.Authenticated + } else { + // If the status is not complete, check why. User may need to + // complete further steps. + } + } + } + } + .onFailure { + // See https://clerk.com/docs/custom-flows/error-handling + // for more info on error handling + Log.e("OAuthViewModel", it.longErrorMessageOrNull, it.throwable) + } + } + } + + sealed interface UiState { + data object Loading : UiState + + data object SignedOut : UiState + + data object Authenticated : UiState + } +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/ui/theme/Color.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/ui/theme/Color.kt new file mode 100644 index 00000000..ba18c55e --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/ui/theme/Color.kt @@ -0,0 +1,11 @@ +package com.clerk.customflows.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/ui/theme/Theme.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/ui/theme/Theme.kt new file mode 100644 index 00000000..dfd2a52d --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/ui/theme/Theme.kt @@ -0,0 +1,51 @@ +package com.clerk.customflows.ui.theme + +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext + +private val DarkColorScheme = + darkColorScheme(primary = Purple80, secondary = PurpleGrey80, tertiary = Pink80) + +private val LightColorScheme = + lightColorScheme( + primary = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40, + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ + ) + +@Composable +fun ClerkTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit, +) { + val colorScheme = + when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + + MaterialTheme(colorScheme = colorScheme, typography = Typography, content = content) +} diff --git a/samples/custom-flows/src/main/java/com/clerk/customflows/ui/theme/Type.kt b/samples/custom-flows/src/main/java/com/clerk/customflows/ui/theme/Type.kt new file mode 100644 index 00000000..1663d1e3 --- /dev/null +++ b/samples/custom-flows/src/main/java/com/clerk/customflows/ui/theme/Type.kt @@ -0,0 +1,36 @@ +package com.clerk.customflows.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = + Typography( + bodyLarge = + TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp, + ) + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + labelSmall = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp + ) + */ + ) diff --git a/samples/custom-flows/src/main/res/drawable/ic_launcher_background.xml b/samples/custom-flows/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..07d5da9c --- /dev/null +++ b/samples/custom-flows/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/custom-flows/src/main/res/drawable/ic_launcher_foreground.xml b/samples/custom-flows/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..2b068d11 --- /dev/null +++ b/samples/custom-flows/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/samples/example-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/samples/custom-flows/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from samples/example-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to samples/custom-flows/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/samples/example-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/samples/custom-flows/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from samples/example-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to samples/custom-flows/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/samples/custom-flows/src/main/res/mipmap-hdpi/ic_launcher.webp b/samples/custom-flows/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..dcfe72d63410a8d0ac554c989f81d0766a1c04bd GIT binary patch literal 2544 zcmV<|BMM6+kP&iE72><{uN5ByfO)zNNNRpD?KgXYN2Sh~wCm`&H zQ!{GC3Q)heAh|06)S<_lJqt#WBq^$B{~}ic!;9fg0ztM-5r%Mox+6sYCjbp9z_740 zj$I;60R}(<9PV5$zgpHo917aDkzD??_uV0ghzU>zsXs|)pa4#`|8bk2a{=hhALVUt z`t@$d4?uPkD2G#g_WC9`23O14k97H?!F#$sG?p}p@67rS5 zC#3v%nxi*y@sc}!LsI>8#Ok1i0@?U92S4EYnBsiojfju#iC*Ssat#obQ8Y8m}&E_)w|4gj`?XN8rlwgc(|g9HeoqriaS$Z!?M zu?S%L*QWEe8T)wbKi2eZP1rhY13kblhc}J^r+S=T&vPf8~G)M?Y9EDEum=M-?jULb*RfsZBoRVSiGQd&k3?D}_ z7^IZ(uQkGWX^+N{NT$@C8oKD8KWZa{1yE5@MW;}Vb(+T)J&3(MjRV!~QAu`{OiQdT zIzUp07$69SVQ?_E4iA4#kw6SkevkAcRZ$8Cn@%2$RgPd+mWwUnXsJso@^K%#nn91$ zc!?A%ji@?4JkOiLCeTZ?B!;$x93mJ=m~7mPEx)$imuA2|Ga#LE6;RaS=rVF+Iinl~ zc*{!kaGD*qg_6~_Fjxc=EENU^sC2+_8-1ZAF+gk{#)KmqMKNdS&@4qGJF#6xXh?yf}RZA2xMSOKJw3 ze5SxZDtOT?tiu9BoOyHWFk&1cmT3wx(s9QbyMSi~yWc)<{AG8D8sXG(Qeem@gVTUR zEIp zL8)x#N<&kfi&HKm1r(AyEh(Wcv$K#pbx+yhlYR6x`oCzTiaEWr2Zr{scMjLdnHbcO za&QT5=f!~n|LQw+J$-<~QzI$hm0$}P+Lp2+M2%!rP)HKW#>TE)dlG!wX29nhhD>5S zJPwA3GW-~r0HK)FRvNVTT=H2K&s|XPfhfV%UuC2nU@5ssV;ak0ZTOLv57?5e3*TbaL-tnc+>u zpX6&y2l8#`?Sbw&4A?+N@bUTXh%{2Lfa{;SWw8xHSV9C>}u^Y z&e|2&bCK6tse)l#)NY6|QZc9|nh;|#vV}#lVt}0E`&Mn8Yl%G3rE&%&|W9PfkoUn%iMFdI=DWpIL+aZ(?^opnTV~wsUp|+`GHN4A<&Iost zXUKSX=NR}=IjS5Tjt@rx!&tZ-%}sTasAE$w4QWyC1g51+$C9*|KkHaPAQbu_r8Im* z0AvOo19zZ#$#qmhHl2o);)atz#w=Ak;tB7&f9NXE^w0wGcf zkOOHz8{~d6z{nkGZYZ)PY6G@a`h;RTsmj>=7;KCU0t^Tv|LAt`28>80I5=>RC1A3n zL_HtO0?AHJsozvT4t56+b+T2G6$nm5QEdC}bOTr$JSY}m4Ym&42NotQKqA_<+6Fi# zB>;>1Bycmh3LG7nmRrNq;lZ#0AtTEufGjXImXc^urXH?#ye?c6P5{+Z^ug=rlf74g zDO5=%h*TxJ60;-!WFgyDsxZST@V%d1l1?K>hgVkvq)9LaR;RgSQCOE6q9%kvD1hv%x13?9H>5?c*Mh+2WvfIh^ zoe3dA4(U?g(A{F+K&YRRoGZsrLdk^yMMe;c5af~zq0nD6RQ2JzlBa!0LarX>GGD7?5eD-hf~cYhTY2nBUb22v2mVD8dVF;9+sh$u?z8gv G6Yr>bW^Y{p literal 0 HcmV?d00001 diff --git a/samples/custom-flows/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/samples/custom-flows/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..e1cc1f1efc6c8fc64f0bb4aaa59ef711497fd745 GIT binary patch literal 9896 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 literal 0 HcmV?d00001 diff --git a/samples/custom-flows/src/main/res/mipmap-mdpi/ic_launcher.webp b/samples/custom-flows/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..6fbca334de7ab298a3c15e4e22483f3cf95f6b54 GIT binary patch literal 1524 zcmVvg_0*Mp0;f}Ty5L7 zZLj3CZQHhOn?FET8!fZP_Sw2@_iWofZF7vI_C}IA-CxeVrfI8DBWKo;>?aOf5)c&m zKN`fgjU-7_&+c9R+5T;~wQZ|b=C$vJYb0elq)tT|{ZepuxD#LmUL=jQ>{;__Ml`DN z%d`H{!crCEpRJgRbQhkbWv?-2K5L;PUUu~H_}pgx9=AFkM|J}l+zG}AjE)KdG zAjb~ELv#dFm$=XTs{9r+q5y~-2^BNGTI1JBE;68aORy!ME4e|Vk__AxfiWJD6J*yfGy}dkXzT?+CRzV@bm;iFG=FsjU8ul%Yps{OYUAx{{E_!7S^TMG)XFD!cop z*Z}d2UmdfCtR>R|lV$lptc!>74?Ki%TS#G|7*LyCBAO}=Z1v$|fZcushkF+Xx!z)K za;=5O@Edu*d>1`&hY~nMP+gL5f>IdVS{m=8kX_Ikfcx^@ps#%#bl5$qcBq~bu5hlO@tR{t+=w8#uh(2a2 zO$o^mCFPtF70tI==_v`)#lZULnxsGBuNYDPNixDs0CFiZzeb_lOnYU`8CVUQJ0haF zT|OvJV94?h;tmr8P!vg|l&O-)ch4p=zz!b;2<8)bBmRyOu7BeF_=IGHBoGpnmFnAi zY%(hc9*stI4>!rVxE5RBcKMaLMS^q@k>!9ul&C~5T=#fbYzW{Vj-UBcnwB7bvwQ)$ zT`Vw3Cc)JL5|XIgG>h}*UuVbSEZyvwGb&}$K_Rokk-YYm-b2ocW+re*RT{wm5qG(o zfBolMe)LTTi|gPzvmQQ$KVlwZUk$sNOYks0j7KEph)j|+qq5SB*MH#0kNx;o|9U7S zU`@Qsbs;9YS*DL-ZR}*WftUD*_aqAHebdn z;wEDtp(s_L&T=ng;%nl4=1lXdp>khNF^nmb`5nS+F) zY0#Vxqs$MX8G!V2ywmIoA8-xRAMpYF0+~T+ItrsAH3Px?44axua1M4r7mV!TANUf^ zl=sT*0z%5ZFe(xwp@Gy$?bv(J=H?(AkG-)jR!0YYJc)&;n|+^IyGJ= aR5kvLYa=~t%U4j@_@6F&)~3^HFXRA>J=`V$ literal 0 HcmV?d00001 diff --git a/samples/custom-flows/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/samples/custom-flows/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..d5e6ed2fa2e12e670c9d55548d9a1afb33697cb8 GIT binary patch literal 4392 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 i3Sb*irjecm2mvrr`uR0LjLi`2`Cv%!mmP zfw@*9<|2uT=|zzjg~)8!JctrtF9vyE2iN>)qd~8uE*bzK-w=7e0DJnF)8pSp&ssV2 zygN}EB3dM}epxNj&oQ4x_Ilmh%i;?}ndkE+---pYy}cY0M;#l)AP)y4$fV|s7cTYo zO632sh)xznF+Y`jPgKs!QE^@DaX@5GhJXbNR#m}ik96I8J5~uH{j-Q~!S0~|Yb^iEWW zpDC<%o!gw^F>1!KIddeFRxL80UUNj@;7L-nTaW+6vAsI*qco-uk?S1S2_CnaBYI0g z6khY@l7VBW!`;`2&@V@MaWAiSaYSJDv8*&d!wE4V1-W=u%_;*=%|fvD;f@_0%wq#z zYyK(}As2NhX2?Vn&OQr9*mZWBw%I(a#aGOkQBnlN=hX zq6x2i$cdiZh!K}fJIy3kxyB6xva_QPu%>+L>u=GE9%+}M3?e&4#KS@~6;ROQdF1s) zUTi(%$JXYw(7w=IE7P7-nWmH!W^MVgTW8ybg^LMJa-aOfg$* zFe&z#!@Y0=et=0KEJkRzmu@O$N^guvwzX3*f|)rYjFX`W@6z##GYfluG@16K7?&iS#L_Mp zKnTDnUg-EDNai({cnhMQwvOI=yEXkaUcgmGBUHL-!us{h|NRq^wP1zvFP^kN8 z^J=kJTyf!zAK&2~iVN_~20rTefH2E<%gd#XlmsJ~VS#%Z-rK9)TUf0vs&DJcOUfzs>GH8c=S-Iy;El8b*dr{O@yfI#{l zya}V&Xf#*hU3iZKC{`oPY7oBfuZbrPKZ}WZ(~F15i(I4lB7Pxb7>5nW z9_9gftl3>&jqi##fI|u1f+yj0QA`qL4&6QvmLbP!o}w(I;J9hr{RO#AI- z2Qd4!c%;-2%CbZjL{&z%PmEd+#lIn&ILV$C5KZ=HQ%# zeO}jJmNTPhm$TZ@QX@MhxN#M{iNTzof{&O70L(7;)>3m%hwS@)(|nTn0zu+a<~TeQ|JxHo=mS&OG>pIF`&hVMmSa_-z|$w^2T?NjLS)h3;Jw&B zvX~G&l`MJ%S?HHN%}(eC6IhL5Tp?v=*^wN@-7?~%hWozg&$79ZA$lfx&+}sJeCbRq zm`I5i5=o1a$YR=R)%B&fmnL~v^iVLLSth#0zvDbF&wa1G-j>!F>H$!;(uCCUe{AnN zyFboz;-9OsjCo!t#Q)+KF|5X{URK1;!pNQG85uFis~KklF%8GxG2caeJjFW=zP{m( zqRae?+!X_rXkT7l79Bkdx(v}*ry;sGZQ8V{)h*bdMI{Om$wX70QxpqTmURo}3PrB` AOaK4? literal 0 HcmV?d00001 diff --git a/samples/custom-flows/src/main/res/mipmap-xhdpi/ic_launcher.webp b/samples/custom-flows/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..1fe32cc6936bc54f65982134f95108027984d53c GIT binary patch literal 3842 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

    |FRR!{4yRn=C2p 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 Mhlj@iu&}UbR?y{6EC2ui literal 0 HcmV?d00001 diff --git a/samples/custom-flows/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/samples/custom-flows/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..3a0ace61317044adf2da517e77c27f1892fea4ad GIT binary patch literal 7736 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 literal 0 HcmV?d00001 diff --git a/samples/custom-flows/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/samples/custom-flows/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..19ec816e4b4367530343d4525e13350dcc5e7b80 GIT binary patch literal 39596 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 literal 0 HcmV?d00001 diff --git a/samples/custom-flows/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/samples/custom-flows/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..59d32d3b6b6b40175d21ab48b2742cb738f68717 GIT binary patch literal 10352 zcmV-$D38}tNk&F!C;$LgMM6+kP&iCmC;$L2kH8}kO)zX5DU9;>a6DD_ANZl_2oe3C z0KUHGrW0fbbeZd-8^mEs@<}mUgg8qPL=X=kfu$Hk2enM9+#U!QWMJE$h`sl2(Q>0P z?Cn@hHq@AQMXj|`HbB~TH7qr9jH+7Bw8nvwPRUih&H3N^wuReBk`yTq