Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 568cfa9c authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add locked provider chip and screen" into main

parents 9c2ce37d 1e918795
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -27,11 +27,11 @@
  <!-- Title of a screen prompting if the user would like to sign in with provider
  [CHAR LIMIT=80] -->
  <string name="use_password_title">Use password?</string>
  <!-- Content description for the dismiss button of a screen. [CHAR LIMIT=NONE] -->
  <!-- Text on this dismiss button of a screen. [CHAR LIMIT=NONE] -->
  <string name="dialog_dismiss_button">Dismiss</string>
  <!-- Content description for the continue button of a screen. [CHAR LIMIT=NONE] -->
  <!-- Text on the continue button of a screen. [CHAR LIMIT=NONE] -->
  <string name="dialog_continue_button">Continue</string>
  <!-- Content description for the sign in options button of a screen. [CHAR LIMIT=NONE] -->
  <!-- Text on the sign in options button of a screen. [CHAR LIMIT=NONE] -->
  <string name="dialog_sign_in_options_button">Sign-in Options</string>
  <!-- Title for multiple credentials folded screen. [CHAR LIMIT=NONE] -->
  <string name="sign_in_options_title">Sign-in Options</string>
@@ -41,4 +41,11 @@
  <string name="choose_passkey_title">Choose passkey</string>
  <!-- Title for multiple credentials screen with only passwords. [CHAR LIMIT=NONE] -->
  <string name="choose_password_title">Choose password</string>
  <!-- Text on the sign in on phone button [CHAR LIMIT=NONE] -->
  <string name="sign_in_on_phone_button">Sign in on phone</string>
  <!-- Text on the locked provider button when unlocked[CHAR LIMIT=NONE] -->
  <string name="locked_credential_entry_label_subtext_no_sign_in">No sign-in info</string>
  <!-- Text on the locked provider button when locked[CHAR LIMIT=NONE] -->
  <string name="locked_credential_entry_label_subtext_tap_to_unlock">Tap to unlock</string>

</resources>
 No newline at end of file
+2 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.credentialmanager.model.Request
import com.android.credentialmanager.client.CredentialManagerClient
import com.android.credentialmanager.model.EntryInfo
import com.android.credentialmanager.model.get.ActionEntryInfo
import com.android.credentialmanager.model.get.AuthenticationEntryInfo
import com.android.credentialmanager.model.get.CredentialEntryInfo
import com.android.credentialmanager.ui.mappers.toGet
import android.util.Log
@@ -114,6 +115,7 @@ sealed class CredentialSelectorUiState {
        data class MultipleEntry(
            val accounts: List<PerUserNameEntries>,
            val actionEntryList: List<ActionEntryInfo>,
            val authenticationEntryList: List<AuthenticationEntryInfo>,
        ) : Get() {
            data class PerUserNameEntries(
                val userName: String,
+49 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.credentialmanager.ui.components
import android.graphics.drawable.Drawable
import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
@@ -29,12 +30,18 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.wear.compose.material.Chip
import androidx.core.graphics.drawable.toBitmap
import androidx.wear.compose.material.ChipColors
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.graphics.Color
import androidx.wear.compose.material.ChipDefaults
import androidx.wear.compose.material.Text
import com.android.credentialmanager.R
import com.android.credentialmanager.model.get.AuthenticationEntryInfo
import com.android.credentialmanager.ui.components.CredentialsScreenChip.TOPPADDING
import androidx.compose.material3.Icon

/* Used as credential suggestion or user action chip. */
@Composable
fun CredentialsScreenChip(
    label: String,
@@ -65,9 +72,15 @@ fun CredentialsScreenChip(
        }

    val iconParam: (@Composable BoxScope.() -> Unit)? =
        icon?.let {
        icon?.toBitmap()?.asImageBitmap()?.let {
            {
                 ChipDefaults.IconSize
                Icon(
                    bitmap = it,
                    // Decorative purpose only.
                    contentDescription = null,
                    modifier = Modifier.size(32.dp),
                    tint = Color.Unspecified
                )
            }
        }

@@ -139,6 +152,40 @@ fun DismissChip(onClick: () -> Unit) {
    )
}

@Composable
fun SignInOnPhoneChip(onClick: () -> Unit) {
    CredentialsScreenChip(
        label = stringResource(R.string.sign_in_on_phone_button),
        onClick = onClick,
        modifier = Modifier
            .padding(top = TOPPADDING),
    )
}

@Composable
fun LockedProviderChip(
    authenticationEntryInfo: AuthenticationEntryInfo,
    onClick: () -> Unit
) {
    val secondaryLabel = stringResource(
        if (authenticationEntryInfo.isUnlockedAndEmpty)
            R.string.locked_credential_entry_label_subtext_no_sign_in
        else R.string.locked_credential_entry_label_subtext_tap_to_unlock
    )

    if (!authenticationEntryInfo.isUnlockedAndEmpty) {
        // TODO(b/324465527) need to draw a lock icon here. may need to switch over from using chip
    }

    CredentialsScreenChip(
        label = authenticationEntryInfo.title,
        icon = authenticationEntryInfo.icon,
        secondaryLabel = secondaryLabel,
        onClick = onClick,
        modifier = Modifier.padding(top = TOPPADDING),
    )
}

@Preview
@Composable
fun DismissChipPreview() {
+5 −1
Original line number Diff line number Diff line
@@ -27,10 +27,12 @@ import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.unit.dp
import androidx.core.graphics.drawable.toBitmap
import androidx.wear.compose.material.Text
import androidx.compose.ui.graphics.Color
import androidx.compose.material3.Icon
import androidx.wear.compose.material.MaterialTheme as WearMaterialTheme
import androidx.compose.ui.text.style.TextAlign

/* Used as header across Credential Selector screens. */
@Composable
fun SignInHeader(
    icon: Drawable?,
@@ -46,7 +48,9 @@ fun SignInHeader(
                bitmap = icon.toBitmap().asImageBitmap(),
                modifier = Modifier.size(32.dp),
                // Decorative purpose only.
                contentDescription = null
                contentDescription = null,
                tint = Color.Unspecified,

            )
        }

+1 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ fun Request.Get.toGet(isPrimary: Boolean): CredentialSelectorUiState.Get {
            )
            },
            actionEntryList = providerInfos.flatMap { it.actionEntryList },
            authenticationEntryList = providerInfos.flatMap { it.authenticationEntryList }
        )
    }
}
Loading