diff options
-rw-r--r-- | ui-compose/build.gradle.kts | 2 | ||||
-rw-r--r-- | ui-compose/src/main/kotlin/app/passwordstore/ui/pgp/PGPKeyList.kt | 39 |
2 files changed, 40 insertions, 1 deletions
diff --git a/ui-compose/build.gradle.kts b/ui-compose/build.gradle.kts index 901896a3..8dfee593 100644 --- a/ui-compose/build.gradle.kts +++ b/ui-compose/build.gradle.kts @@ -18,7 +18,7 @@ android { dependencies { api(libs.compose.foundation.core) api(libs.compose.foundation.layout) - api(libs.compose.material) api(libs.compose.material3) api(libs.compose.ui.core) + implementation(projects.cryptoPgpainless) } diff --git a/ui-compose/src/main/kotlin/app/passwordstore/ui/pgp/PGPKeyList.kt b/ui-compose/src/main/kotlin/app/passwordstore/ui/pgp/PGPKeyList.kt new file mode 100644 index 00000000..ccc6fa01 --- /dev/null +++ b/ui-compose/src/main/kotlin/app/passwordstore/ui/pgp/PGPKeyList.kt @@ -0,0 +1,39 @@ +package app.passwordstore.ui.pgp + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import app.passwordstore.crypto.GpgIdentifier + +@Composable +public fun KeyList( + identifiers: List<GpgIdentifier>, + onItemClick: (identifier: GpgIdentifier) -> Unit, + modifier: Modifier = Modifier, +) { + LazyColumn(modifier = modifier) { + items(identifiers) { identifier -> + KeyItem(identifier = identifier, modifier = Modifier.clickable { onItemClick(identifier) }) + } + } +} + +@Composable +private fun KeyItem( + identifier: GpgIdentifier, + modifier: Modifier = Modifier, +) { + val label = + when (identifier) { + is GpgIdentifier.KeyId -> identifier.id.toString() + is GpgIdentifier.UserId -> identifier.email + } + Box(modifier = modifier.padding(16.dp).fillMaxWidth()) { Text(text = label) } +} |