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:
@@ -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
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user