Generalise the implementation of PeopleListEvent.removeTag() to also support public list events. Use defaults in already dependent code.

This commit is contained in:
KotlinGeekDev
2025-06-06 18:34:45 +01:00
parent 94243f4060
commit af2b2328cf
2 changed files with 37 additions and 17 deletions
@@ -3125,6 +3125,8 @@ class Account(
PeopleListEvent.removeWord(
earlierVersion = blockList,
word = word,
// It is true here, since PeopleListEvent.removeTag(..) defaulted to private tags.
isPrivate = true,
signer = signer,
) {
Amethyst.instance.client.send(it)
@@ -3178,6 +3180,8 @@ class Account(
PeopleListEvent.removeUser(
earlierVersion = blockList,
pubKeyHex = pubkeyHex,
// Reason: refer to showWord(..) above.
isPrivate = true,
signer = signer,
) {
Amethyst.instance.client.send(it)
@@ -270,46 +270,62 @@ class PeopleListEvent(
fun removeWord(
earlierVersion: PeopleListEvent,
word: String,
isPrivate: Boolean,
signer: NostrSigner,
createdAt: Long = TimeUtils.now(),
onReady: (PeopleListEvent) -> Unit,
) = removeTag(earlierVersion, "word", word, signer, createdAt, onReady)
) = removeTag(earlierVersion, "word", word, isPrivate, signer, createdAt, onReady)
fun removeUser(
earlierVersion: PeopleListEvent,
pubKeyHex: String,
isPrivate: Boolean,
signer: NostrSigner,
createdAt: Long = TimeUtils.now(),
onReady: (PeopleListEvent) -> Unit,
) = removeTag(earlierVersion, "p", pubKeyHex, signer, createdAt, onReady)
) = removeTag(earlierVersion, "p", pubKeyHex, isPrivate, signer, createdAt, onReady)
fun removeTag(
earlierVersion: PeopleListEvent,
key: String,
tag: String,
isPrivate: Boolean,
signer: NostrSigner,
createdAt: Long = TimeUtils.now(),
onReady: (PeopleListEvent) -> Unit,
) {
earlierVersion.privateTagsOrEmpty(signer) { privateTags ->
encryptTags(
privateTags =
privateTags
.filter { it.size > 1 && !(it[0] == key && it[1] == tag) }
.toTypedArray(),
signer = signer,
) { encryptedTags ->
create(
content = encryptedTags,
tags =
earlierVersion.tags
if (isPrivate) {
earlierVersion.privateTagsOrEmpty(signer) { privateTags ->
encryptTags(
privateTags =
privateTags
.filter { it.size > 1 && !(it[0] == key && it[1] == tag) }
.toTypedArray(),
signer = signer,
createdAt = createdAt,
onReady = onReady,
)
) { encryptedTags ->
create(
content = encryptedTags,
tags =
earlierVersion.tags
.filter { it.size > 1 && !(it[0] == key && it[1] == tag) }
.toTypedArray(),
signer = signer,
createdAt = createdAt,
onReady = onReady,
)
}
}
} else {
create(
content = earlierVersion.content,
tags =
earlierVersion.tags
.filter { it.size > 1 && !(it[0] == key && it[1] == tag) }
.toTypedArray(),
signer,
createdAt,
onReady,
)
}
}