Migrates to use "title" instead of "name" tags for NIP-51 lists.

This commit is contained in:
Vitor Pamplona
2026-02-05 15:01:43 -05:00
parent 4ced055035
commit e97a30fcb1
13 changed files with 55 additions and 42 deletions
@@ -40,7 +40,7 @@ import com.vitorpamplona.quartz.nip51Lists.bookmarkList.tags.BookmarkIdTag
import com.vitorpamplona.quartz.nip51Lists.bookmarkList.tags.EventBookmark
import com.vitorpamplona.quartz.nip51Lists.encryption.PrivateTagsInContent
import com.vitorpamplona.quartz.nip51Lists.remove
import com.vitorpamplona.quartz.nip51Lists.tags.NameTag
import com.vitorpamplona.quartz.nip51Lists.tags.TitleTag
import com.vitorpamplona.quartz.utils.TimeUtils
@Immutable
@@ -62,7 +62,7 @@ class BookmarkListEvent(
override fun linkedAddressIds() = tags.mapNotNull(AddressBookmark::parseAddressId)
fun name() = tags.firstNotNullOfOrNull(NameTag::parse)
fun title() = tags.firstNotNullOfOrNull(TitleTag::parse)
fun countBookmarks() = tags.count(BookmarkIdTag::isTagged)
@@ -192,19 +192,19 @@ class BookmarkListEvent(
}
suspend fun create(
name: String = "",
title: String = "",
publicBookmarks: List<BookmarkIdTag> = emptyList(),
privateBookmarks: List<BookmarkIdTag> = emptyList(),
dTag: String = DEFAULT_D_TAG_BOOKMARKS,
signer: NostrSigner,
createdAt: Long = TimeUtils.now(),
): BookmarkListEvent {
val template = build(name, publicBookmarks, privateBookmarks, signer, dTag, createdAt)
val template = build(title, publicBookmarks, privateBookmarks, signer, dTag, createdAt)
return signer.sign(template)
}
suspend fun build(
name: String = "",
title: String = "",
publicBookmarks: List<BookmarkIdTag> = emptyList(),
privateBookmarks: List<BookmarkIdTag> = emptyList(),
signer: NostrSigner,
@@ -218,7 +218,7 @@ class BookmarkListEvent(
) {
dTag(dTag)
alt(ALT)
name(name)
title(title)
bookmarks(publicBookmarks)
initializer()
@@ -23,7 +23,11 @@ package com.vitorpamplona.quartz.nip51Lists.bookmarkList
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
import com.vitorpamplona.quartz.nip51Lists.bookmarkList.tags.BookmarkIdTag
import com.vitorpamplona.quartz.nip51Lists.tags.NameTag
import com.vitorpamplona.quartz.nip51Lists.tags.TitleTag
@Deprecated("NIP-51 has deprecated name. Use title instead", ReplaceWith("title()"))
fun TagArrayBuilder<BookmarkListEvent>.name(name: String) = addUnique(NameTag.assemble(name))
fun TagArrayBuilder<BookmarkListEvent>.title(title: String) = addUnique(TitleTag.assemble(title))
fun TagArrayBuilder<BookmarkListEvent>.bookmarks(bookmarks: List<BookmarkIdTag>) = addAll(bookmarks.map { it.toTagArray() })
@@ -68,11 +68,12 @@ class LabeledBookmarkListEvent(
override fun linkedAddressIds() = tags.mapNotNull(AddressBookmark::parseAddressId)
@Deprecated("NIP-51 has deprecated name. Use title instead", ReplaceWith("title()"))
fun name() = tags.firstNotNullOfOrNull(NameTag::parse)
fun title() = tags.firstNotNullOfOrNull(TitleTag::parse)
fun nameOrTitle() = name() ?: title()
fun titleOrName() = title() ?: name()
fun description() = tags.firstNotNullOfOrNull(DescriptionTag::parse)
@@ -93,7 +94,7 @@ class LabeledBookmarkListEvent(
fun createBookmarkAddress(pubKey: HexKey) = Address(KIND, pubKey, Uuid.random().toString())
suspend fun create(
name: String = "",
title: String = "",
bookmarkIdTag: BookmarkIdTag,
isPrivate: Boolean,
optionalListDescription: String? = null,
@@ -102,7 +103,7 @@ class LabeledBookmarkListEvent(
): LabeledBookmarkListEvent =
if (isPrivate) {
create(
name = name,
title = title,
description = optionalListDescription,
publicBookmarks = emptyList(),
privateBookmarks = listOf(bookmarkIdTag),
@@ -111,7 +112,7 @@ class LabeledBookmarkListEvent(
)
} else {
create(
name = name,
title = title,
description = optionalListDescription,
publicBookmarks = listOf(bookmarkIdTag),
privateBookmarks = emptyList(),
@@ -195,7 +196,7 @@ class LabeledBookmarkListEvent(
suspend fun modifyName(
earlierVersion: LabeledBookmarkListEvent,
newName: String,
newTitle: String,
signer: NostrSigner,
createdAt: Long = TimeUtils.now(),
): LabeledBookmarkListEvent {
@@ -203,9 +204,9 @@ class LabeledBookmarkListEvent(
val currentTitle = earlierVersion.tags.first { it[0] == NameTag.TAG_NAME || it[0] == TitleTag.TAG_NAME }
val newTitleTag =
if (currentTitle[0] == NameTag.TAG_NAME) {
NameTag.assemble(newName)
NameTag.assemble(newTitle)
} else {
TitleTag.assemble(newName)
TitleTag.assemble(newTitle)
}
return resign(
@@ -287,7 +288,7 @@ class LabeledBookmarkListEvent(
@OptIn(ExperimentalUuidApi::class)
suspend fun create(
name: String = "",
title: String = "",
description: String? = null,
image: String? = null,
publicBookmarks: List<BookmarkIdTag> = emptyList(),
@@ -297,7 +298,7 @@ class LabeledBookmarkListEvent(
createdAt: Long = TimeUtils.now(),
): LabeledBookmarkListEvent {
val template =
build(name, publicBookmarks, privateBookmarks, signer, dTag, createdAt) {
build(title, publicBookmarks, privateBookmarks, signer, dTag, createdAt) {
if (description != null) description(description)
if (image != null) image(image)
}
@@ -306,7 +307,7 @@ class LabeledBookmarkListEvent(
@OptIn(ExperimentalUuidApi::class)
suspend fun build(
name: String = "",
title: String = "",
publicBookmarks: List<BookmarkIdTag> = emptyList(),
privateBookmarks: List<BookmarkIdTag> = emptyList(),
signer: NostrSigner,
@@ -320,7 +321,7 @@ class LabeledBookmarkListEvent(
) {
dTag(dTag)
alt(ALT)
name(name)
title(title)
bookmarks(publicBookmarks)
initializer()
@@ -25,9 +25,13 @@ import com.vitorpamplona.quartz.nip51Lists.bookmarkList.tags.BookmarkIdTag
import com.vitorpamplona.quartz.nip51Lists.tags.DescriptionTag
import com.vitorpamplona.quartz.nip51Lists.tags.ImageTag
import com.vitorpamplona.quartz.nip51Lists.tags.NameTag
import com.vitorpamplona.quartz.nip51Lists.tags.TitleTag
@Deprecated("NIP-51 has deprecated name. Use title instead", ReplaceWith("title()"))
fun TagArrayBuilder<LabeledBookmarkListEvent>.name(name: String) = addUnique(NameTag.assemble(name))
fun TagArrayBuilder<LabeledBookmarkListEvent>.title(title: String) = addUnique(TitleTag.assemble(title))
fun TagArrayBuilder<LabeledBookmarkListEvent>.bookmarks(bookmarks: List<BookmarkIdTag>) = addAll(bookmarks.map { it.toTagArray() })
fun TagArrayBuilder<LabeledBookmarkListEvent>.description(listDescription: String) = addUnique(DescriptionTag.assemble(listDescription))
@@ -61,11 +61,11 @@ class PeopleListEvent(
override fun linkedPubKeys() = tags.mapNotNull(UserTag::parseKey)
@Deprecated("NIP-51 has deprecated name. Use title instead", ReplaceWith("title()"))
fun name() = tags.firstNotNullOfOrNull(NameTag::parse)
fun nameOrTitle() = name() ?: title()
fun titleOrName() = title() ?: name()
@Deprecated("NIP-51 has deprecated Title. Use name instead", ReplaceWith("name()"))
fun title() = tags.firstNotNullOfOrNull(TitleTag::parse)
fun description() = tags.firstNotNullOfOrNull(DescriptionTag::parse)
@@ -103,7 +103,7 @@ class PeopleListEvent(
@OptIn(ExperimentalUuidApi::class)
suspend fun create(
name: String,
title: String,
person: UserTag,
isPrivate: Boolean,
signer: NostrSigner,
@@ -112,7 +112,7 @@ class PeopleListEvent(
): PeopleListEvent =
if (isPrivate) {
create(
name = name,
title = title,
publicMembers = emptyList(),
privateMembers = listOf(person),
signer = signer,
@@ -121,7 +121,7 @@ class PeopleListEvent(
)
} else {
create(
name = name,
title = title,
publicMembers = listOf(person),
privateMembers = emptyList(),
signer = signer,
@@ -249,20 +249,20 @@ class PeopleListEvent(
@OptIn(ExperimentalUuidApi::class)
suspend fun create(
name: String,
title: String,
publicMembers: List<UserTag> = emptyList(),
privateMembers: List<UserTag> = emptyList(),
signer: NostrSigner,
dTag: String = Uuid.random().toString(),
createdAt: Long = TimeUtils.now(),
): PeopleListEvent {
val template = build(name, publicMembers, privateMembers, signer, dTag, createdAt)
val template = build(title, publicMembers, privateMembers, signer, dTag, createdAt)
return signer.sign(template)
}
@OptIn(ExperimentalUuidApi::class)
suspend fun build(
name: String,
title: String,
publicMembers: List<UserTag> = emptyList(),
privateMembers: List<UserTag> = emptyList(),
signer: NostrSigner,
@@ -276,7 +276,7 @@ class PeopleListEvent(
) {
dTag(dTag)
alt(ALT)
name(name)
title(title)
peoples(publicMembers)
initializer()
@@ -293,7 +293,7 @@ class PeopleListEvent(
): PeopleListEvent {
val newListTemplate =
build(
name = title,
title = title,
publicMembers = publicMembers,
privateMembers = privateMembers,
signer = signer,
@@ -316,7 +316,7 @@ class PeopleListEvent(
): PeopleListEvent {
val cloneTemplate =
build(
name = title,
title = title,
publicMembers = publicMembers,
privateMembers = privateMembers,
signer = signer,
@@ -330,14 +330,14 @@ class PeopleListEvent(
}
suspend fun createListWithUser(
name: String,
title: String,
pubKeyHex: String,
isPrivate: Boolean,
signer: NostrSigner,
createdAt: Long = TimeUtils.now(),
): PeopleListEvent =
create(
name = name,
title = title,
person = UserTag(pubKey = pubKeyHex),
isPrivate = isPrivate,
signer = signer,
@@ -25,9 +25,13 @@ import com.vitorpamplona.quartz.nip51Lists.muteList.tags.UserTag
import com.vitorpamplona.quartz.nip51Lists.tags.DescriptionTag
import com.vitorpamplona.quartz.nip51Lists.tags.ImageTag
import com.vitorpamplona.quartz.nip51Lists.tags.NameTag
import com.vitorpamplona.quartz.nip51Lists.tags.TitleTag
@Deprecated("NIP-51 has deprecated name. Use title instead", ReplaceWith("title()"))
fun TagArrayBuilder<PeopleListEvent>.name(name: String) = addUnique(NameTag.assemble(name))
fun TagArrayBuilder<PeopleListEvent>.title(name: String) = addUnique(TitleTag.assemble(name))
fun TagArrayBuilder<PeopleListEvent>.description(desc: String) = addUnique(DescriptionTag.assemble(desc))
fun TagArrayBuilder<PeopleListEvent>.image(url: String) = addUnique(ImageTag.assemble(url))
@@ -37,8 +37,8 @@ import com.vitorpamplona.quartz.nip51Lists.relayLists.tags.relaySet
import com.vitorpamplona.quartz.nip51Lists.remove
import com.vitorpamplona.quartz.nip51Lists.tags.DescriptionTag
import com.vitorpamplona.quartz.nip51Lists.tags.ImageTag
import com.vitorpamplona.quartz.nip51Lists.tags.NameTag
import com.vitorpamplona.quartz.nip51Lists.tags.RelayTag
import com.vitorpamplona.quartz.nip51Lists.tags.TitleTag
import com.vitorpamplona.quartz.utils.TimeUtils
@Immutable
@@ -52,7 +52,7 @@ class RelaySetEvent(
) : PrivateTagArrayEvent(id, pubKey, createdAt, KIND, tags, content, sig) {
fun relays(): List<NormalizedRelayUrl> = tags.mapNotNull(RelayTag.Companion::parse)
fun name() = tags.firstNotNullOfOrNull(NameTag::parse)
fun title() = tags.firstNotNullOfOrNull(TitleTag::parse)
fun description() = tags.firstNotNullOfOrNull(DescriptionTag::parse)