feat: Add @Preview annotations to NIP-43 UI components

Adds preview functions for RelayMemberEventCard variants (membership
list, add/remove member, join/leave request) and MembershipActions
states (not member, is member, join sent, leave sent).

https://claude.ai/code/session_01PRqe4bBCb9u62oPh8u9sHx
This commit is contained in:
Claude
2026-03-29 04:22:33 +00:00
parent b1b9707c5f
commit c3447e2a05
2 changed files with 126 additions and 2 deletions
@@ -40,12 +40,14 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.ui.navigation.navs.INav
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.stringRes
import com.vitorpamplona.amethyst.ui.theme.ThemeComparisonColumn
import com.vitorpamplona.quartz.nip43RelayMembers.addMember.RelayAddMemberEvent
import com.vitorpamplona.quartz.nip43RelayMembers.list.RelayMembershipListEvent
import com.vitorpamplona.quartz.nip43RelayMembers.removeMember.RelayRemoveMemberEvent
@@ -139,8 +141,8 @@ private fun RelayMemberEventCard(
icon: ImageVector,
title: String,
subtitle: String?,
nav: INav,
relayPubKey: String?,
nav: INav? = null,
relayPubKey: String? = null,
) {
Column(
modifier =
@@ -175,3 +177,63 @@ private fun RelayMemberEventCard(
}
}
}
@Preview
@Composable
private fun RelayMembershipListCardPreview() {
ThemeComparisonColumn {
RelayMemberEventCard(
icon = Icons.Default.People,
title = "Relay membership list",
subtitle = "42 members",
)
}
}
@Preview
@Composable
private fun RelayAddMemberCardPreview() {
ThemeComparisonColumn {
RelayMemberEventCard(
icon = Icons.Default.PersonAdd,
title = "Member added to relay",
subtitle = "a1b2c3d4e5f6a7b8...",
)
}
}
@Preview
@Composable
private fun RelayRemoveMemberCardPreview() {
ThemeComparisonColumn {
RelayMemberEventCard(
icon = Icons.Default.PersonRemove,
title = "Member removed from relay",
subtitle = "a1b2c3d4e5f6a7b8...",
)
}
}
@Preview
@Composable
private fun RelayJoinRequestCardPreview() {
ThemeComparisonColumn {
RelayMemberEventCard(
icon = Icons.Default.PersonAdd,
title = "Relay join request",
subtitle = null,
)
}
}
@Preview
@Composable
private fun RelayLeaveRequestCardPreview() {
ThemeComparisonColumn {
RelayMemberEventCard(
icon = Icons.AutoMirrored.Filled.ExitToApp,
title = "Relay leave request",
subtitle = null,
)
}
}
@@ -62,12 +62,14 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.ui.navigation.navs.INav
import com.vitorpamplona.amethyst.ui.note.UserCompose
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.stringRes
import com.vitorpamplona.amethyst.ui.theme.ThemeComparisonColumn
import com.vitorpamplona.quartz.nip01Core.core.HexKey
import com.vitorpamplona.quartz.nip01Core.relay.client.reqs.fetchAsFlow
import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter
@@ -301,6 +303,66 @@ fun MembershipActions(
}
}
@Preview
@Composable
private fun MembershipActionsNotMemberPreview() {
ThemeComparisonColumn {
MembershipActions(
isMember = false,
isLoading = false,
joinRequestSent = false,
leaveRequestSent = false,
onJoinRequest = {},
onLeaveRequest = {},
)
}
}
@Preview
@Composable
private fun MembershipActionsIsMemberPreview() {
ThemeComparisonColumn {
MembershipActions(
isMember = true,
isLoading = false,
joinRequestSent = false,
leaveRequestSent = false,
onJoinRequest = {},
onLeaveRequest = {},
)
}
}
@Preview
@Composable
private fun MembershipActionsJoinSentPreview() {
ThemeComparisonColumn {
MembershipActions(
isMember = false,
isLoading = false,
joinRequestSent = true,
leaveRequestSent = false,
onJoinRequest = {},
onLeaveRequest = {},
)
}
}
@Preview
@Composable
private fun MembershipActionsLeaveSentPreview() {
ThemeComparisonColumn {
MembershipActions(
isMember = true,
isLoading = false,
joinRequestSent = false,
leaveRequestSent = true,
onJoinRequest = {},
onLeaveRequest = {},
)
}
}
suspend fun sendJoinRequest(
relay: NormalizedRelayUrl,
accountViewModel: AccountViewModel,