From 46a896e4e756ee7e4452570fe4392872bfa8be06 Mon Sep 17 00:00:00 2001 From: Manmohan Gupta Date: Mon, 15 Jun 2026 04:19:37 +0530 Subject: [PATCH 1/2] fix visibility cleanup items --- .../ui/components/SampleGradientButton.kt | 90 +++++++++++++++++++ .../sample/ui/components/SampleTopBar.kt | 86 ++++++++++++++++++ .../sample/ui/screens/AppearanceScreen.kt | 8 +- .../android/sample/ui/screens/DocsScreen.kt | 4 +- .../sample/ui/screens/EmbeddedLoginScreen.kt | 4 +- .../sample/ui/screens/FavoritesScreen.kt | 4 +- .../sample/ui/screens/ProfileScreen.kt | 4 +- .../sample/ui/screens/SessionsScreen.kt | 4 +- .../android/sample/ui/screens/TokensScreen.kt | 4 +- .../sample/ui/screens/UpdateFullNameScreen.kt | 8 +- config/detekt/detekt.yml | 5 -- .../data/mapper/EnrollmentChallengeMapper.kt | 16 ++-- .../ui/components/EmptyAuthenticatorItem.kt | 2 +- .../components/EnrolledAuthenticatorItem.kt | 2 +- .../ui/components/ErrorHandler.kt | 2 +- .../presentation/ui/components/ErrorScreen.kt | 4 +- .../ui/components/GradientButton.kt | 2 +- .../presentation/ui/components/TopBar.kt | 2 +- .../ui/mfa/AuthenticatorEnrollScreen.kt | 2 +- .../ui/mfa/AuthenticatorMethodsScreen.kt | 6 +- .../ui/mfa/EmailEnrollmentScreen.kt | 2 +- .../ui/mfa/EnrolledAuthenticatorListScreen.kt | 4 +- .../ui/mfa/OTPVerificationScreen.kt | 2 +- .../presentation/ui/mfa/QREnrollmentScreen.kt | 2 +- .../ui/mfa/RecoveryCodeEnrollmentScreen.kt | 2 +- .../AuthenticatorItem.kt | 4 +- .../PrimaryAuthenticatorListScreen.kt | 4 +- .../SecondaryAuthenticatorListScreen.kt | 4 +- .../ui/mfa/phone/PhoneEnrollmentScreen.kt | 2 +- .../ui/passkeys/PasskeyEnableScreen.kt | 2 +- .../presentation/ui/utils/ObserveAsEvents.kt | 2 +- 31 files changed, 230 insertions(+), 59 deletions(-) create mode 100644 app/src/main/java/com/auth0/android/sample/ui/components/SampleGradientButton.kt create mode 100644 app/src/main/java/com/auth0/android/sample/ui/components/SampleTopBar.kt rename universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/{authenticator_methods => authenticatormethods}/AuthenticatorItem.kt (98%) rename universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/{authenticator_methods => authenticatormethods}/PrimaryAuthenticatorListScreen.kt (99%) rename universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/{authenticator_methods => authenticatormethods}/SecondaryAuthenticatorListScreen.kt (97%) diff --git a/app/src/main/java/com/auth0/android/sample/ui/components/SampleGradientButton.kt b/app/src/main/java/com/auth0/android/sample/ui/components/SampleGradientButton.kt new file mode 100644 index 0000000..a90da46 --- /dev/null +++ b/app/src/main/java/com/auth0/android/sample/ui/components/SampleGradientButton.kt @@ -0,0 +1,90 @@ +package com.auth0.android.sample.ui.components + +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonColors +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ButtonElevation +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import com.auth0.universalcomponents.theme.Auth0Theme + +@Composable +fun SampleGradientButton( + modifier: Modifier = Modifier, + gradient: Brush = Brush.verticalGradient( + colors = listOf( + Color.White.copy(alpha = 0.15f), + Color.Transparent + ) + ), + buttonDefaultColor: ButtonColors? = null, + shape: RoundedCornerShape? = null, + elevation: ButtonElevation = ButtonDefaults.buttonElevation( + defaultElevation = 0.dp, + pressedElevation = 2.dp + ), + isLoading: Boolean = false, + enabled: Boolean = true, + borderStroke: BorderStroke? = null, + onClick: () -> Unit, + content: @Composable () -> Unit, +) { + val colors = Auth0Theme.colors + val dimensions = Auth0Theme.dimensions + val resolvedShape = shape ?: Auth0Theme.shapes.large + + val buttonColors = buttonDefaultColor ?: ButtonDefaults.buttonColors( + containerColor = colors.backgroundPrimary, + contentColor = colors.textOnPrimary, + disabledContainerColor = colors.backgroundPrimary.copy(alpha = 0.38f), + disabledContentColor = colors.textOnPrimary.copy(alpha = 0.38f) + ) + + Button( + modifier = modifier, + colors = buttonColors, + shape = resolvedShape, + contentPadding = PaddingValues(), + elevation = elevation, + enabled = enabled && !isLoading, + border = borderStroke, + onClick = { onClick() }, + ) { + Box( + modifier = Modifier + .background(gradient) + .then(modifier), + contentAlignment = Alignment.Center, + ) { + Row( + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically + ) { + if (isLoading) { + CircularProgressIndicator( + modifier = Modifier.size(16.dp), + color = Color.White.copy(alpha = 0.75f), + strokeWidth = 2.dp + ) + Spacer(modifier = Modifier.size(dimensions.spacingXs)) + } else { + content() + } + } + } + } +} diff --git a/app/src/main/java/com/auth0/android/sample/ui/components/SampleTopBar.kt b/app/src/main/java/com/auth0/android/sample/ui/components/SampleTopBar.kt new file mode 100644 index 0000000..3fadb3d --- /dev/null +++ b/app/src/main/java/com/auth0/android/sample/ui/components/SampleTopBar.kt @@ -0,0 +1,86 @@ +package com.auth0.android.sample.ui.components + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material3.CenterAlignedTopAppBar +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.dp +import com.auth0.universalcomponents.theme.Auth0Theme + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SampleTopBar( + title: String, + modifier: Modifier = Modifier, + topBarColor: Color = Color.Unspecified, + showSeparator: Boolean = false, + showBackNavigation: Boolean = true, + trailingIcon: Painter? = null, + titleTextStyle: TextStyle? = null, + onBackClick: () -> Unit, + trailingIconClick: () -> Unit = {} +) { + val colors = Auth0Theme.colors + val typography = Auth0Theme.typography + + val resolvedTopBarColor = if (topBarColor == Color.Unspecified) colors.backgroundLayerBase else topBarColor + val titleStyle = titleTextStyle ?: typography.title + + Column { + CenterAlignedTopAppBar( + title = { + Text( + text = title, + style = titleStyle, + color = colors.textBold + ) + }, + navigationIcon = { + if (showBackNavigation) { + IconButton(onClick = onBackClick) { + Icon( + imageVector = Icons.AutoMirrored.Filled.ArrowBack, + contentDescription = "Navigate back", + tint = MaterialTheme.colorScheme.onSurface + ) + } + } + }, + actions = { + if (trailingIcon != null) { + IconButton(onClick = trailingIconClick) { + Icon( + painter = trailingIcon, + contentDescription = "Action", + tint = MaterialTheme.colorScheme.onSurface + ) + } + } + }, + colors = TopAppBarDefaults.centerAlignedTopAppBarColors( + containerColor = resolvedTopBarColor, + ), + modifier = modifier + ) + if (showSeparator) { + HorizontalDivider( + modifier = Modifier.fillMaxWidth(), + thickness = 0.3.dp, + color = colors.borderDefault + ) + } + } +} diff --git a/app/src/main/java/com/auth0/android/sample/ui/screens/AppearanceScreen.kt b/app/src/main/java/com/auth0/android/sample/ui/screens/AppearanceScreen.kt index 9727a6a..e8efe04 100644 --- a/app/src/main/java/com/auth0/android/sample/ui/screens/AppearanceScreen.kt +++ b/app/src/main/java/com/auth0/android/sample/ui/screens/AppearanceScreen.kt @@ -21,8 +21,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.auth0.android.sample.ui.viewmodels.AppearanceViewModel -import com.auth0.universalcomponents.presentation.ui.components.GradientButton -import com.auth0.universalcomponents.presentation.ui.components.TopBar +import com.auth0.android.sample.ui.components.SampleGradientButton +import com.auth0.android.sample.ui.components.SampleTopBar import com.auth0.android.sample.ui.theme.isAuth0DarkTheme import com.auth0.universalcomponents.theme.Auth0Theme @@ -60,7 +60,7 @@ fun AppearanceScreen( Scaffold( topBar = { - TopBar(title = "", showBackNavigation = true, onBackClick = onBack) + SampleTopBar(title = "", showBackNavigation = true, onBackClick = onBack) }, containerColor = colors.backgroundLayerBase ) { padding -> @@ -137,7 +137,7 @@ fun AppearanceScreen( Spacer(modifier = Modifier.height(dimensions.spacingLg)) - GradientButton( + SampleGradientButton( modifier = Modifier .fillMaxWidth() .height(sizes.buttonHeight), diff --git a/app/src/main/java/com/auth0/android/sample/ui/screens/DocsScreen.kt b/app/src/main/java/com/auth0/android/sample/ui/screens/DocsScreen.kt index d070dc3..56a2999 100644 --- a/app/src/main/java/com/auth0/android/sample/ui/screens/DocsScreen.kt +++ b/app/src/main/java/com/auth0/android/sample/ui/screens/DocsScreen.kt @@ -9,7 +9,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import com.auth0.universalcomponents.presentation.ui.components.TopBar +import com.auth0.android.sample.ui.components.SampleTopBar import com.auth0.universalcomponents.theme.Auth0Theme @Composable @@ -19,7 +19,7 @@ fun DocsScreen(onBack: () -> Unit) { Scaffold( topBar = { - TopBar(title = "Docs", onBackClick = onBack) + SampleTopBar(title = "Docs", onBackClick = onBack) }, containerColor = colors.backgroundLayerBase ) { padding -> diff --git a/app/src/main/java/com/auth0/android/sample/ui/screens/EmbeddedLoginScreen.kt b/app/src/main/java/com/auth0/android/sample/ui/screens/EmbeddedLoginScreen.kt index cc55b89..aa6514d 100644 --- a/app/src/main/java/com/auth0/android/sample/ui/screens/EmbeddedLoginScreen.kt +++ b/app/src/main/java/com/auth0/android/sample/ui/screens/EmbeddedLoginScreen.kt @@ -40,7 +40,7 @@ import com.auth0.android.sample.ui.components.Auth0LogoHeader import com.auth0.android.sample.ui.components.OrDivider import com.auth0.android.sample.ui.theme.auth0ScreenBackground import com.auth0.android.sample.ui.theme.isAuth0DarkTheme -import com.auth0.universalcomponents.presentation.ui.components.GradientButton +import com.auth0.android.sample.ui.components.SampleGradientButton import com.auth0.universalcomponents.theme.Auth0Theme /** @@ -222,7 +222,7 @@ fun EmbeddedLoginScreen( Spacer(modifier = Modifier.height(dimensions.spacingLg)) // Continue button - GradientButton( + SampleGradientButton( modifier = Modifier .fillMaxWidth() .height(sizes.buttonHeight), diff --git a/app/src/main/java/com/auth0/android/sample/ui/screens/FavoritesScreen.kt b/app/src/main/java/com/auth0/android/sample/ui/screens/FavoritesScreen.kt index 027cf05..bb6f5cb 100644 --- a/app/src/main/java/com/auth0/android/sample/ui/screens/FavoritesScreen.kt +++ b/app/src/main/java/com/auth0/android/sample/ui/screens/FavoritesScreen.kt @@ -9,7 +9,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import com.auth0.universalcomponents.presentation.ui.components.TopBar +import com.auth0.android.sample.ui.components.SampleTopBar import com.auth0.universalcomponents.theme.Auth0Theme @Composable @@ -19,7 +19,7 @@ fun FavoritesScreen(onBack: () -> Unit) { Scaffold( topBar = { - TopBar(title = "Favorites", onBackClick = onBack) + SampleTopBar(title = "Favorites", onBackClick = onBack) }, containerColor = colors.backgroundLayerBase ) { padding -> diff --git a/app/src/main/java/com/auth0/android/sample/ui/screens/ProfileScreen.kt b/app/src/main/java/com/auth0/android/sample/ui/screens/ProfileScreen.kt index ee3e838..bffa16c 100644 --- a/app/src/main/java/com/auth0/android/sample/ui/screens/ProfileScreen.kt +++ b/app/src/main/java/com/auth0/android/sample/ui/screens/ProfileScreen.kt @@ -28,7 +28,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import com.auth0.universalcomponents.presentation.ui.components.TopBar +import com.auth0.android.sample.ui.components.SampleTopBar import com.auth0.universalcomponents.theme.Auth0Theme /** @@ -61,7 +61,7 @@ fun ProfileScreen( Scaffold( topBar = { - TopBar(title = "", showBackNavigation = true, onBackClick = onBack) + SampleTopBar(title = "", showBackNavigation = true, onBackClick = onBack) }, containerColor = colors.backgroundLayerBase ) { padding -> diff --git a/app/src/main/java/com/auth0/android/sample/ui/screens/SessionsScreen.kt b/app/src/main/java/com/auth0/android/sample/ui/screens/SessionsScreen.kt index fd09843..a93ee98 100644 --- a/app/src/main/java/com/auth0/android/sample/ui/screens/SessionsScreen.kt +++ b/app/src/main/java/com/auth0/android/sample/ui/screens/SessionsScreen.kt @@ -9,7 +9,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import com.auth0.universalcomponents.presentation.ui.components.TopBar +import com.auth0.android.sample.ui.components.SampleTopBar import com.auth0.universalcomponents.theme.Auth0Theme @Composable @@ -19,7 +19,7 @@ fun SessionsScreen(onBack: () -> Unit) { Scaffold( topBar = { - TopBar(title = "Sessions", onBackClick = onBack) + SampleTopBar(title = "Sessions", onBackClick = onBack) }, containerColor = colors.backgroundLayerBase ) { padding -> diff --git a/app/src/main/java/com/auth0/android/sample/ui/screens/TokensScreen.kt b/app/src/main/java/com/auth0/android/sample/ui/screens/TokensScreen.kt index a5ef0a5..e28ee81 100644 --- a/app/src/main/java/com/auth0/android/sample/ui/screens/TokensScreen.kt +++ b/app/src/main/java/com/auth0/android/sample/ui/screens/TokensScreen.kt @@ -9,7 +9,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import com.auth0.universalcomponents.presentation.ui.components.TopBar +import com.auth0.android.sample.ui.components.SampleTopBar import com.auth0.universalcomponents.theme.Auth0Theme @Composable @@ -19,7 +19,7 @@ fun TokensScreen(onBack: () -> Unit) { Scaffold( topBar = { - TopBar(title = "Tokens", onBackClick = onBack) + SampleTopBar(title = "Tokens", onBackClick = onBack) }, containerColor = colors.backgroundLayerBase ) { padding -> diff --git a/app/src/main/java/com/auth0/android/sample/ui/screens/UpdateFullNameScreen.kt b/app/src/main/java/com/auth0/android/sample/ui/screens/UpdateFullNameScreen.kt index c210405..60084cd 100644 --- a/app/src/main/java/com/auth0/android/sample/ui/screens/UpdateFullNameScreen.kt +++ b/app/src/main/java/com/auth0/android/sample/ui/screens/UpdateFullNameScreen.kt @@ -16,8 +16,8 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import com.auth0.universalcomponents.presentation.ui.components.GradientButton -import com.auth0.universalcomponents.presentation.ui.components.TopBar +import com.auth0.android.sample.ui.components.SampleGradientButton +import com.auth0.android.sample.ui.components.SampleTopBar import com.auth0.universalcomponents.theme.Auth0Theme /** @@ -48,7 +48,7 @@ fun UpdateFullNameScreen( Scaffold( topBar = { - TopBar(title = "", showBackNavigation = true, onBackClick = onBack) + SampleTopBar(title = "", showBackNavigation = true, onBackClick = onBack) }, containerColor = colors.backgroundLayerBase ) { padding -> @@ -114,7 +114,7 @@ fun UpdateFullNameScreen( Spacer(modifier = Modifier.height(dimensions.spacingXl)) - GradientButton( + SampleGradientButton( modifier = Modifier .fillMaxWidth() .height(sizes.buttonHeight), diff --git a/config/detekt/detekt.yml b/config/detekt/detekt.yml index 78fe92d..7ee64ec 100644 --- a/config/detekt/detekt.yml +++ b/config/detekt/detekt.yml @@ -30,10 +30,8 @@ formatting: active: true NoWildcardImports: active: true - # authenticator_methods package is public API; renaming would break consumers. PackageName: active: true - excludes: [ '**/mfa/authenticator_methods/**' ] complexity: active: true @@ -69,11 +67,8 @@ naming: TopLevelPropertyNaming: active: true constantPattern: '[A-Z][_A-Z0-9]*' - # The authenticator_methods package is part of the published public API. - # Renaming it to drop the underscore would be a breaking change for consumers. PackageNaming: active: true - excludes: [ '**/mfa/authenticator_methods/**' ] style: active: true diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/data/mapper/EnrollmentChallengeMapper.kt b/universal_components/src/main/java/com/auth0/universalcomponents/data/mapper/EnrollmentChallengeMapper.kt index 1b23f41..514a3c3 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/data/mapper/EnrollmentChallengeMapper.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/data/mapper/EnrollmentChallengeMapper.kt @@ -24,14 +24,14 @@ import com.auth0.android.result.TotpEnrollmentChallenge as SdkTotpEnrollmentChal * This decouples the UI components from SDK types for better flexibility. */ -fun SdkMfaEnrollmentChallenge.toDomainModel(): MfaEnrollmentChallenge { +internal fun SdkMfaEnrollmentChallenge.toDomainModel(): MfaEnrollmentChallenge { return MfaEnrollmentChallenge( id = this.id, authSession = this.authSession ) } -fun SdkTotpEnrollmentChallenge.toDomainModel(): TotpEnrollmentChallenge { +internal fun SdkTotpEnrollmentChallenge.toDomainModel(): TotpEnrollmentChallenge { return TotpEnrollmentChallenge( id = this.id, authSession = this.authSession, @@ -40,7 +40,7 @@ fun SdkTotpEnrollmentChallenge.toDomainModel(): TotpEnrollmentChallenge { ) } -fun SdkRecoveryCodeEnrollmentChallenge.toDomainModel(): RecoveryCodeEnrollmentChallenge { +internal fun SdkRecoveryCodeEnrollmentChallenge.toDomainModel(): RecoveryCodeEnrollmentChallenge { return RecoveryCodeEnrollmentChallenge( id = this.id, authSession = this.authSession, @@ -48,7 +48,7 @@ fun SdkRecoveryCodeEnrollmentChallenge.toDomainModel(): RecoveryCodeEnrollmentCh ) } -fun SdkPasskeyEnrollmentChallenge.toDomainModel(): PasskeyEnrollmentChallenge { +internal fun SdkPasskeyEnrollmentChallenge.toDomainModel(): PasskeyEnrollmentChallenge { return PasskeyEnrollmentChallenge( authenticationMethodId = this.authenticationMethodId, authSession = this.authSession, @@ -56,7 +56,7 @@ fun SdkPasskeyEnrollmentChallenge.toDomainModel(): PasskeyEnrollmentChallenge { ) } -fun SdkAuthParamsPublicKey.toDomainModel(): AuthnParamsPublicKey { +internal fun SdkAuthParamsPublicKey.toDomainModel(): AuthnParamsPublicKey { return AuthnParamsPublicKey( authenticatorSelection = AuthenticatorSelection( residentKey = this.authenticatorSelection.residentKey, @@ -82,7 +82,7 @@ fun SdkAuthParamsPublicKey.toDomainModel(): AuthnParamsPublicKey { ) } -fun SdkPasskeyAuthenticationMethod.toDomainModel(): PasskeyAuthenticationMethod { +internal fun SdkPasskeyAuthenticationMethod.toDomainModel(): PasskeyAuthenticationMethod { return PasskeyAuthenticationMethod( id = this.id, type = this.type, @@ -95,7 +95,7 @@ fun SdkPasskeyAuthenticationMethod.toDomainModel(): PasskeyAuthenticationMethod /** * Reverse mapper to convert domain model back to SDK type for API calls */ -fun AuthnParamsPublicKey.toSdkModel(): SdkAuthParamsPublicKey { +internal fun AuthnParamsPublicKey.toSdkModel(): SdkAuthParamsPublicKey { return com.auth0.android.result.AuthnParamsPublicKey( authenticatorSelection = com.auth0.android.result.AuthenticatorSelection( residentKey = this.authenticatorSelection.residentKey, @@ -124,7 +124,7 @@ fun AuthnParamsPublicKey.toSdkModel(): SdkAuthParamsPublicKey { /** * Reverse mapper to convert domain PublicKeyCredentials to SDK type for API calls */ -fun PublicKeyCredentials.toSdkModel(): SdkPublicKeyCredentials { +internal fun PublicKeyCredentials.toSdkModel(): SdkPublicKeyCredentials { return SdkPublicKeyCredentials( authenticatorAttachment = this.authenticatorAttachment, clientExtensionResults = com.auth0.android.request.ClientExtensionResults( diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/EmptyAuthenticatorItem.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/EmptyAuthenticatorItem.kt index a7c2713..f87328f 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/EmptyAuthenticatorItem.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/EmptyAuthenticatorItem.kt @@ -14,7 +14,7 @@ import androidx.compose.ui.unit.dp import com.auth0.universalcomponents.theme.Auth0Theme @Composable -fun EmptyAuthenticatorItem( +internal fun EmptyAuthenticatorItem( modifier: Modifier = Modifier, emptyMessage: String ) { diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/EnrolledAuthenticatorItem.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/EnrolledAuthenticatorItem.kt index d4507ad..de93dfb 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/EnrolledAuthenticatorItem.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/EnrolledAuthenticatorItem.kt @@ -33,7 +33,7 @@ import com.auth0.universalcomponents.presentation.ui.menu.MenuItem import com.auth0.universalcomponents.theme.Auth0Theme @Composable -fun EnrolledAuthenticatorItem( +internal fun EnrolledAuthenticatorItem( title: String, subtitle: String, modifier: Modifier = Modifier, diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/ErrorHandler.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/ErrorHandler.kt index 55529f1..6637195 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/ErrorHandler.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/ErrorHandler.kt @@ -18,7 +18,7 @@ import com.auth0.universalcomponents.presentation.mfaRecoveryHandler import com.auth0.universalcomponents.presentation.ui.UiError @Composable -fun ErrorHandler( +internal fun ErrorHandler( uiError: UiError, modifier: Modifier = Modifier, shouldRetry: Boolean = false diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/ErrorScreen.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/ErrorScreen.kt index 09a67e1..34e411d 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/ErrorScreen.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/ErrorScreen.kt @@ -28,7 +28,7 @@ import com.auth0.universalcomponents.R import com.auth0.universalcomponents.theme.Auth0Theme @Composable -fun ErrorScreen( +internal fun ErrorScreen( modifier: Modifier = Modifier, mainErrorMessage: String, description: String = stringResource(R.string.unable_to_process_contact), @@ -94,7 +94,7 @@ fun ErrorScreen( } @Composable -fun MessageWithLink( +internal fun MessageWithLink( message: String, clickableLinkText: String? = null, clickableLink: String = "https://auth0.com/contact-us" diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/GradientButton.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/GradientButton.kt index f3bbb06..1e30bf9 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/GradientButton.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/GradientButton.kt @@ -22,7 +22,7 @@ import androidx.compose.ui.unit.dp import com.auth0.universalcomponents.theme.Auth0Theme @Composable -fun GradientButton( +internal fun GradientButton( modifier: Modifier = Modifier, gradient: Brush = Brush.verticalGradient( colors = listOf( diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/TopBar.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/TopBar.kt index 1c96e86..1cb446f 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/TopBar.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/components/TopBar.kt @@ -22,7 +22,7 @@ import com.auth0.universalcomponents.theme.Auth0Theme @OptIn(ExperimentalMaterial3Api::class) @Composable -fun TopBar( +internal fun TopBar( title: String, modifier: Modifier = Modifier, topBarColor: Color = Color.Unspecified, diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/AuthenticatorEnrollScreen.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/AuthenticatorEnrollScreen.kt index 3145287..50884f4 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/AuthenticatorEnrollScreen.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/AuthenticatorEnrollScreen.kt @@ -6,7 +6,7 @@ import com.auth0.universalcomponents.presentation.ui.components.ErrorScreen import com.auth0.universalcomponents.presentation.ui.mfa.phone.PhoneEnrollmentScreen @Composable -fun AuthenticatorEnrollmentScreen( +internal fun AuthenticatorEnrollmentScreen( authenticatorType: AuthenticatorType, onContinue: (String, String, String?) -> Unit, onBackClick: () -> Unit, diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/AuthenticatorMethodsScreen.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/AuthenticatorMethodsScreen.kt index d539d85..10eda46 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/AuthenticatorMethodsScreen.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/AuthenticatorMethodsScreen.kt @@ -22,8 +22,8 @@ import com.auth0.universalcomponents.di.UniversalComponentsModule import com.auth0.universalcomponents.presentation.ui.components.CircularLoader import com.auth0.universalcomponents.presentation.ui.components.ErrorHandler import com.auth0.universalcomponents.presentation.ui.components.TopBar -import com.auth0.universalcomponents.presentation.ui.mfa.authenticator_methods.PrimaryAuthenticatorListScreen -import com.auth0.universalcomponents.presentation.ui.mfa.authenticator_methods.SecondaryAuthenticatorListScreen +import com.auth0.universalcomponents.presentation.ui.mfa.authenticatormethods.PrimaryAuthenticatorListScreen +import com.auth0.universalcomponents.presentation.ui.mfa.authenticatormethods.SecondaryAuthenticatorListScreen import com.auth0.universalcomponents.presentation.ui.passkeys.PasskeyEvent import com.auth0.universalcomponents.presentation.ui.passkeys.PasskeyUiState import com.auth0.universalcomponents.presentation.ui.passkeys.PasskeyViewModel @@ -36,7 +36,7 @@ import com.auth0.universalcomponents.utils.createCredential @OptIn(ExperimentalMaterial3Api::class) @Composable -fun AuthenticatorMethodsScreen( +internal fun AuthenticatorMethodsScreen( authenticatorMethodViewModel: AuthenticatorMethodsViewModel = viewModel( factory = UniversalComponentsModule.provideAuthenticatorMethodViewModelFactory() ), diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/EmailEnrollmentScreen.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/EmailEnrollmentScreen.kt index 63b8b1e..c0a246f 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/EmailEnrollmentScreen.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/EmailEnrollmentScreen.kt @@ -47,7 +47,7 @@ import com.auth0.universalcomponents.utils.ValidationUtil @OptIn(ExperimentalMaterial3Api::class) @Composable -fun EmailEnrollmentScreen( +internal fun EmailEnrollmentScreen( authenticatorType: AuthenticatorType, viewModel: EnrollmentViewModel = viewModel( factory = UniversalComponentsModule.provideEnrollmentViewModelFactory(authenticatorType) diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/EnrolledAuthenticatorListScreen.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/EnrolledAuthenticatorListScreen.kt index 6fc9178..4bd773d 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/EnrolledAuthenticatorListScreen.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/EnrolledAuthenticatorListScreen.kt @@ -50,7 +50,7 @@ import com.auth0.universalcomponents.utils.createCredential */ @OptIn(ExperimentalMaterial3Api::class) @Composable -fun EnrolledAuthenticatorListScreen( +internal fun EnrolledAuthenticatorListScreen( authenticatorType: AuthenticatorType, modifier: Modifier = Modifier, onBackClick: () -> Unit = {}, @@ -170,7 +170,7 @@ fun EnrolledAuthenticatorListScreen( * Supports both single item and list views */ @Composable -fun AuthenticatorListContent( +internal fun AuthenticatorListContent( authenticatorType: String, authenticators: List, onDeleteAuthenticator: (EnrolledAuthenticationMethod) -> Unit, diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/OTPVerificationScreen.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/OTPVerificationScreen.kt index ee2eddc..cf4fdc0 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/OTPVerificationScreen.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/OTPVerificationScreen.kt @@ -60,7 +60,7 @@ import com.auth0.universalcomponents.theme.Auth0Theme @OptIn(ExperimentalMaterial3Api::class) @Composable -fun OTPVerificationScreen( +internal fun OTPVerificationScreen( authenticatorType: AuthenticatorType, authenticationId: String, authSession: String, diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/QREnrollmentScreen.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/QREnrollmentScreen.kt index 19df094..daef74a 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/QREnrollmentScreen.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/QREnrollmentScreen.kt @@ -75,7 +75,7 @@ import com.google.zxing.WriterException import com.google.zxing.qrcode.QRCodeWriter @Composable -fun QREnrollmentScreen( +internal fun QREnrollmentScreen( authenticatorType: AuthenticatorType, modifier: Modifier = Modifier, viewModel: EnrollmentViewModel = viewModel( diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/RecoveryCodeEnrollmentScreen.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/RecoveryCodeEnrollmentScreen.kt index c9baffb..070cdb0 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/RecoveryCodeEnrollmentScreen.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/RecoveryCodeEnrollmentScreen.kt @@ -56,7 +56,7 @@ import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3Api::class) @Composable -fun RecoveryCodeEnrollmentScreen( +internal fun RecoveryCodeEnrollmentScreen( authenticatorType: AuthenticatorType = AuthenticatorType.RECOVERY_CODE, viewModel: EnrollmentViewModel = viewModel( factory = UniversalComponentsModule.provideEnrollmentViewModelFactory(authenticatorType) diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticator_methods/AuthenticatorItem.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticatormethods/AuthenticatorItem.kt similarity index 98% rename from universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticator_methods/AuthenticatorItem.kt rename to universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticatormethods/AuthenticatorItem.kt index 4960f79..754f4a5 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticator_methods/AuthenticatorItem.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticatormethods/AuthenticatorItem.kt @@ -1,4 +1,4 @@ -package com.auth0.universalcomponents.presentation.ui.mfa.authenticator_methods +package com.auth0.universalcomponents.presentation.ui.mfa.authenticatormethods import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.clickable @@ -26,7 +26,7 @@ import com.auth0.universalcomponents.R import com.auth0.universalcomponents.theme.Auth0Theme @Composable -fun AuthenticatorItem( +internal fun AuthenticatorItem( title: String, leadingIcon: Painter, showActiveTag: Boolean = false, diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticator_methods/PrimaryAuthenticatorListScreen.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticatormethods/PrimaryAuthenticatorListScreen.kt similarity index 99% rename from universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticator_methods/PrimaryAuthenticatorListScreen.kt rename to universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticatormethods/PrimaryAuthenticatorListScreen.kt index 26f86e9..e123623 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticator_methods/PrimaryAuthenticatorListScreen.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticatormethods/PrimaryAuthenticatorListScreen.kt @@ -1,4 +1,4 @@ -package com.auth0.universalcomponents.presentation.ui.mfa.authenticator_methods +package com.auth0.universalcomponents.presentation.ui.mfa.authenticatormethods import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.BorderStroke @@ -37,7 +37,7 @@ import com.auth0.universalcomponents.theme.Auth0Theme * Displays the passkey onboarding card and sign-in methods available to the user. */ @Composable -fun PrimaryAuthenticatorListScreen( +internal fun PrimaryAuthenticatorListScreen( primaryAuthenticatorUiData: List, modifier: Modifier = Modifier, onAddPasskeyClick: () -> Unit = {}, diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticator_methods/SecondaryAuthenticatorListScreen.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticatormethods/SecondaryAuthenticatorListScreen.kt similarity index 97% rename from universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticator_methods/SecondaryAuthenticatorListScreen.kt rename to universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticatormethods/SecondaryAuthenticatorListScreen.kt index 3af3390..d6ed43a 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticator_methods/SecondaryAuthenticatorListScreen.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/authenticatormethods/SecondaryAuthenticatorListScreen.kt @@ -1,4 +1,4 @@ -package com.auth0.universalcomponents.presentation.ui.mfa.authenticator_methods +package com.auth0.universalcomponents.presentation.ui.mfa.authenticatormethods import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height @@ -19,7 +19,7 @@ import com.auth0.universalcomponents.theme.Auth0Theme * Screen displaying the list of enabled authenticators */ @Composable -fun SecondaryAuthenticatorListScreen( +internal fun SecondaryAuthenticatorListScreen( secondaryAuthenticatorUiData: List, onAuthenticatorItemClick: (SecondaryAuthenticatorUiData) -> Unit ) { diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/phone/PhoneEnrollmentScreen.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/phone/PhoneEnrollmentScreen.kt index ebc950a..8a1f2fe 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/phone/PhoneEnrollmentScreen.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/mfa/phone/PhoneEnrollmentScreen.kt @@ -61,7 +61,7 @@ import com.auth0.universalcomponents.utils.ValidationUtil @OptIn(ExperimentalMaterial3Api::class) @Composable -fun PhoneEnrollmentScreen( +internal fun PhoneEnrollmentScreen( authenticatorType: AuthenticatorType, viewModel: EnrollmentViewModel = viewModel( factory = UniversalComponentsModule.provideEnrollmentViewModelFactory(authenticatorType) diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/passkeys/PasskeyEnableScreen.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/passkeys/PasskeyEnableScreen.kt index 4258613..5bdb9cf 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/passkeys/PasskeyEnableScreen.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/passkeys/PasskeyEnableScreen.kt @@ -36,7 +36,7 @@ import com.auth0.universalcomponents.theme.Auth0Theme * Displays information about passkeys and allows users to enable passkey authentication. */ @Composable -fun PasskeyEnableScreen( +internal fun PasskeyEnableScreen( modifier: Modifier = Modifier, onBackClick: () -> Unit = {}, onEnableClick: () -> Unit = {} diff --git a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/utils/ObserveAsEvents.kt b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/utils/ObserveAsEvents.kt index a78a736..82f631c 100644 --- a/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/utils/ObserveAsEvents.kt +++ b/universal_components/src/main/java/com/auth0/universalcomponents/presentation/ui/utils/ObserveAsEvents.kt @@ -10,7 +10,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.withContext @Composable -fun ObserveAsEvents( +internal fun ObserveAsEvents( flow: Flow, key1: Any? = null, key2: Any? = null, From 9aa236863abe12d5cf6eca9956ce3aec300ff6c4 Mon Sep 17 00:00:00 2001 From: Manmohan Gupta Date: Mon, 15 Jun 2026 04:27:57 +0530 Subject: [PATCH 2/2] Added the default config rule file for detekt --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 4b04427..7d1378f 100644 --- a/build.gradle +++ b/build.gradle @@ -23,6 +23,7 @@ configure(project(':universal_components')) { detekt { buildUponDefaultConfig = true parallel = true + config.setFrom(files("$rootDir/config/detekt/detekt.yml")) source.setFrom(files('src/main/java', 'src/main/kotlin', 'src/test/java', 'src/test/kotlin')) }