|
|
|
@ -5,13 +5,20 @@ package com.tailscale.ipn.ui.view
|
|
|
|
|
|
|
|
|
|
import androidx.compose.foundation.clickable
|
|
|
|
|
import androidx.compose.foundation.layout.Box
|
|
|
|
|
import androidx.compose.foundation.layout.offset
|
|
|
|
|
import androidx.compose.material.icons.Icons
|
|
|
|
|
import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight
|
|
|
|
|
import androidx.compose.material3.Icon
|
|
|
|
|
import androidx.compose.material3.ListItem
|
|
|
|
|
import androidx.compose.material3.ListItemColors
|
|
|
|
|
import androidx.compose.material3.ListItemDefaults
|
|
|
|
|
import androidx.compose.material3.MaterialTheme
|
|
|
|
|
import androidx.compose.material3.Text
|
|
|
|
|
import androidx.compose.runtime.Composable
|
|
|
|
|
import androidx.compose.ui.Modifier
|
|
|
|
|
import androidx.compose.ui.res.stringResource
|
|
|
|
|
import androidx.compose.ui.text.style.TextOverflow
|
|
|
|
|
import androidx.compose.ui.unit.dp
|
|
|
|
|
import com.tailscale.ipn.R
|
|
|
|
|
import com.tailscale.ipn.ui.model.IpnLocal
|
|
|
|
|
import com.tailscale.ipn.ui.theme.minTextSize
|
|
|
|
@ -33,13 +40,17 @@ enum class UserActionState {
|
|
|
|
|
@Composable
|
|
|
|
|
fun UserView(
|
|
|
|
|
profile: IpnLocal.LoginProfile?,
|
|
|
|
|
onClick: () -> Unit = {},
|
|
|
|
|
actionState: UserActionState = UserActionState.NONE
|
|
|
|
|
onClick: (() -> Unit)? = null,
|
|
|
|
|
colors: ListItemColors = ListItemDefaults.colors(),
|
|
|
|
|
actionState: UserActionState = UserActionState.NONE,
|
|
|
|
|
) {
|
|
|
|
|
Box {
|
|
|
|
|
var modifier: Modifier = Modifier
|
|
|
|
|
onClick?.let { modifier = modifier.clickable { it() } }
|
|
|
|
|
profile?.let {
|
|
|
|
|
ListItem(
|
|
|
|
|
modifier = Modifier.clickable { onClick() },
|
|
|
|
|
modifier = modifier,
|
|
|
|
|
colors = colors,
|
|
|
|
|
leadingContent = { Avatar(profile = profile, size = 36) },
|
|
|
|
|
headlineContent = {
|
|
|
|
|
AutoResizingText(
|
|
|
|
@ -59,14 +70,17 @@ fun UserView(
|
|
|
|
|
when (actionState) {
|
|
|
|
|
UserActionState.CURRENT -> CheckedIndicator()
|
|
|
|
|
UserActionState.SWITCHING -> SimpleActivityIndicator(size = 26)
|
|
|
|
|
UserActionState.NAV -> Unit
|
|
|
|
|
UserActionState.NAV ->
|
|
|
|
|
Icon(
|
|
|
|
|
Icons.AutoMirrored.Filled.KeyboardArrowRight, null, Modifier.offset(x = 6.dp))
|
|
|
|
|
UserActionState.NONE -> Unit
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
?: run {
|
|
|
|
|
ListItem(
|
|
|
|
|
modifier = Modifier.clickable { onClick() },
|
|
|
|
|
modifier = modifier,
|
|
|
|
|
colors = colors,
|
|
|
|
|
headlineContent = {
|
|
|
|
|
Text(
|
|
|
|
|
text = stringResource(id = R.string.accounts),
|
|
|
|
|