aws-amplify / amplify-ui

Amplify UI is a collection of accessible, themeable, performant React (and more!) components that can connect directly to the cloud.
https://ui.docs.amplify.aws
Apache License 2.0
929 stars 297 forks source link

Android Native Auth UI #1042

Closed johnnylambada closed 1 year ago

johnnylambada commented 2 years ago

On which framework/platform would you like to see this feature implemented?

Android

Which UI component is this feature-request for?

Authenticator

Please describe your feature-request in detail.

Currently we use the web based auth framework for Android. It's not the best user experience and is prone to failure. We'd much rather have a fully Android Native Auth experience. Using Jetpack Compose would be a significant plus for us as well.

Please describe a solution you'd like.

No response

We love contributors! Is this something you'd be interested in working on?

Milan-Shah commented 2 years ago

@johnnylambada Native (iOS and Android) Authenticator support is on the way :) we will keep you posted as soon as it's ready for a preview launch.

reesscot commented 1 year ago

@johnnylambada The Android Authenticator is now available in Dev Preview. Please check it out and let us know what you think https://ui.docs.amplify.aws/android/connected-components/authenticator

dehboxturtle commented 1 year ago

I tried it out just now on a new project I tried to set up but I'm running into some issues. Does it require a specific version of compose to function? java.lang.NoSuchMethodError: No static method OutlinedTextField(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;ZZLandroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;ZLandroidx/compose/ui/text/input/VisualTransformation;Landroidx/compose/foundation/text/KeyboardOptions;Landroidx/compose/foundation/text/KeyboardActions;ZILandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/TextFieldColors;Landroidx/compose/runtime/Composer;III)V in class Landroidx/compose/material3/OutlinedTextFieldKt; or its super classes (declaration of 'androidx.compose.material3.OutlinedTextFieldKt' appears in /data/app/com.android.dehboxturtle.playmate-I98mhormFzyRYdZlokFL0g==/base.apk) at com.amplifyframework.ui.authenticator.ui.TextInputFieldKt.TextInputField(TextInputField.kt:45)

Here are the relevant parts of my guild.gradle file for the app module. I don't think I'm missing anything.

android {
    namespace 'com.android.dehboxturtle.playmate'
    compileSdk 33

    defaultConfig {
        applicationId "com.android.dehboxturtle.playmate"
        minSdk 24
        targetSdk 33
        versionCode 1
        versionName "0.0.1"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary true
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        coreLibraryDesugaringEnabled true
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = '17'
    }
    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion '1.4.7'
    }
    packagingOptions {
        resources {
            excludes += '/META-INF/{AL2.0,LGPL2.1}'
        }
    }
    buildToolsVersion '31.0.0'
}

dependencies {
    kapt 'com.google.dagger:hilt-compiler:2.46'
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'

    // Amplify core dependency
    implementation 'com.amplifyframework:core-kotlin:2.8.4'
    implementation 'com.amplifyframework:aws-api:2.8.4'
    implementation 'com.amplifyframework:aws-auth-cognito:2.8.4'
    implementation 'com.amplifyframework:aws-api:2.8.4'
    implementation 'com.amplifyframework:aws-storage-s3:2.8.4'
    implementation 'com.amplifyframework.ui:authenticator:1.0.0-dev-preview.0'

    implementation 'com.google.dagger:hilt-android:2.46'
    implementation 'androidx.core:core-ktx:1.10.1'
    implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1'
    implementation 'androidx.activity:activity-compose:1.7.1'
    implementation platform('androidx.compose:compose-bom:2023.05.01')
    implementation 'androidx.compose.ui:ui'
    implementation 'androidx.compose.ui:ui-graphics'
    implementation 'androidx.compose.ui:ui-tooling-preview'
    implementation 'androidx.compose.material3:material3'
    implementation 'androidx.compose.material:material-icons-core'
    implementation 'androidx.activity:activity-compose:1.7.1'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
    androidTestImplementation platform('androidx.compose:compose-bom:2023.05.01')
    androidTestImplementation 'androidx.compose.ui:ui-test-junit4'
    debugImplementation 'androidx.compose.ui:ui-tooling'
    debugImplementation 'androidx.compose.ui:ui-test-manifest'
}
calebpollman commented 1 year ago

Hi @dehboxturtle! This repo only contains the Web and React Native Authenticator components. Can you please open a new issue in the Amplify UI Android repo?

calebpollman commented 1 year ago

Closing this feature request as the Android Authenticator has been released in the Amplify UI Android repo

dehboxturtle commented 1 year ago

Oh whoops! Sorry about that! I will repost there