fix: Make add/remove member events support multiple p tags and add NIP-43 to NoteMaster

Changes memberPubKey() to memberPubKeys() returning a list of all p tags
in RelayAddMemberEvent and RelayRemoveMemberEvent. Updates renderers to
display multiple members. Adds NIP-43 event rendering to ThreadFeedView
(NoteMaster) alongside NoteCompose.

https://claude.ai/code/session_01PRqe4bBCb9u62oPh8u9sHx
This commit is contained in:
Claude
2026-03-29 14:13:41 +00:00
parent c3447e2a05
commit cad0ff3d80
5 changed files with 48 additions and 14 deletions
@@ -39,20 +39,20 @@ class RelayAddMemberEvent(
content: String,
sig: HexKey,
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
fun memberPubKey() = tags.firstNotNullOfOrNull(PTag::parseKey)
fun memberPubKeys() = tags.mapNotNull(PTag::parseKey)
companion object {
const val KIND = 8000
const val ALT_DESCRIPTION = "Relay member added"
fun build(
memberPubKey: HexKey,
memberPubKeys: List<HexKey>,
createdAt: Long = TimeUtils.now(),
initializer: TagArrayBuilder<RelayAddMemberEvent>.() -> Unit = {},
) = eventTemplate(KIND, "", createdAt) {
alt(ALT_DESCRIPTION)
protect()
add(PTag.assemble(memberPubKey, null))
memberPubKeys.forEach { add(PTag.assemble(it, null)) }
initializer()
}
}
@@ -39,20 +39,20 @@ class RelayRemoveMemberEvent(
content: String,
sig: HexKey,
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
fun memberPubKey() = tags.firstNotNullOfOrNull(PTag::parseKey)
fun memberPubKeys() = tags.mapNotNull(PTag::parseKey)
companion object {
const val KIND = 8001
const val ALT_DESCRIPTION = "Relay member removed"
fun build(
memberPubKey: HexKey,
memberPubKeys: List<HexKey>,
createdAt: Long = TimeUtils.now(),
initializer: TagArrayBuilder<RelayRemoveMemberEvent>.() -> Unit = {},
) = eventTemplate(KIND, "", createdAt) {
alt(ALT_DESCRIPTION)
protect()
add(PTag.assemble(memberPubKey, null))
memberPubKeys.forEach { add(PTag.assemble(it, null)) }
initializer()
}
}