mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-03-18 05:41:56 +01:00
Support for NIP-31 alt tags
This commit is contained in:
parent
7b55b69c12
commit
fccfb2aaba
@ -477,10 +477,10 @@ class Account(
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun sendNewUserMetadata(toString: String, identities: List<IdentityClaim>) {
|
||||
suspend fun sendNewUserMetadata(toString: String, newName: String, identities: List<IdentityClaim>) {
|
||||
if (!isWriteable()) return
|
||||
|
||||
MetadataEvent.create(toString, identities, signer) {
|
||||
MetadataEvent.create(toString, newName, identities, signer) {
|
||||
Client.send(it)
|
||||
LocalCache.justConsume(it, null)
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ class NewUserMetadataViewModel : ViewModel() {
|
||||
ObjectMapper().writeValue(writer, currentJson)
|
||||
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
account.sendNewUserMetadata(writer.buffer.toString(), newClaims)
|
||||
account.sendNewUserMetadata(writer.buffer.toString(), displayName.value.trim(), newClaims)
|
||||
}
|
||||
clear()
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ class AdvertisedRelayListEvent(
|
||||
} else {
|
||||
arrayOf(it.relayUrl, it.type.code)
|
||||
}
|
||||
}.toTypedArray()
|
||||
}.plusElement(arrayOf("alt", "Relay list event with ${list.size} relays")).toTypedArray()
|
||||
val msg = ""
|
||||
|
||||
signer.sign(createdAt, kind, tags, msg, onReady)
|
||||
|
@ -50,11 +50,14 @@ class AppDefinitionEvent(
|
||||
const val kind = 31990
|
||||
|
||||
fun create(
|
||||
details: UserMetadata,
|
||||
signer: NostrSigner,
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (AppDefinitionEvent) -> Unit
|
||||
) {
|
||||
val tags = emptyArray<Array<String>>()
|
||||
val tags = arrayOf(
|
||||
arrayOf("alt", "App definition event for ${details.name}")
|
||||
)
|
||||
signer.sign(createdAt, kind, tags, "", onReady)
|
||||
}
|
||||
}
|
||||
|
@ -21,13 +21,16 @@ class AppRecommendationEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 31989
|
||||
const val alt = "App recommendations by the author"
|
||||
|
||||
fun create(
|
||||
signer: NostrSigner,
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (AppRecommendationEvent) -> Unit
|
||||
) {
|
||||
val tags = emptyArray<Array<String>>()
|
||||
val tags = arrayOf(
|
||||
arrayOf("alt", alt)
|
||||
)
|
||||
signer.sign(createdAt, kind, tags, "", onReady)
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ class AudioHeaderEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 1808
|
||||
const val alt = "Audio header"
|
||||
|
||||
private const val DOWNLOAD_URL = "download_url"
|
||||
private const val STREAM_URL = "stream_url"
|
||||
@ -49,7 +50,8 @@ class AudioHeaderEvent(
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
},
|
||||
arrayOf("alt", alt)
|
||||
).toTypedArray()
|
||||
|
||||
signer.sign(createdAt, kind, tags, description, onReady)
|
||||
|
@ -28,6 +28,7 @@ class AudioTrackEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 31337
|
||||
const val alt = "Audio track"
|
||||
|
||||
private const val TYPE = "c"
|
||||
private const val PRICE = "price"
|
||||
@ -50,7 +51,8 @@ class AudioTrackEvent(
|
||||
arrayOf(TYPE, type),
|
||||
price?.let { arrayOf(PRICE, it) },
|
||||
cover?.let { arrayOf(COVER, it) },
|
||||
subject?.let { arrayOf(SUBJECT, it) }
|
||||
subject?.let { arrayOf(SUBJECT, it) },
|
||||
arrayOf("alt", alt)
|
||||
).toTypedArray()
|
||||
|
||||
signer.sign(createdAt, kind, tags, "", onReady)
|
||||
|
@ -18,5 +18,6 @@ class BadgeAwardEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 8
|
||||
const val alt = "Badge award"
|
||||
}
|
||||
}
|
||||
|
@ -20,5 +20,6 @@ class BadgeDefinitionEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 30009
|
||||
const val alt = "Badge definition"
|
||||
}
|
||||
}
|
||||
|
@ -24,5 +24,6 @@ class BadgeProfilesEvent(
|
||||
companion object {
|
||||
const val kind = 30008
|
||||
const val standardDTAg = "profile_badges"
|
||||
const val alt = "List of accepted badges by the author"
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ class BookmarkListEvent(
|
||||
) : GeneralListEvent(id, pubKey, createdAt, kind, tags, content, sig) {
|
||||
companion object {
|
||||
const val kind = 30001
|
||||
const val alt = "List of bookmarks"
|
||||
|
||||
fun addEvent(
|
||||
earlierVersion: BookmarkListEvent?,
|
||||
@ -166,7 +167,13 @@ class BookmarkListEvent(
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (BookmarkListEvent) -> Unit
|
||||
) {
|
||||
signer.sign(createdAt, kind, tags, content, onReady)
|
||||
val newTags = if (tags.any { it.size > 1 && it[0] == "alt" }) {
|
||||
tags
|
||||
} else {
|
||||
tags + arrayOf("alt", alt)
|
||||
}
|
||||
|
||||
signer.sign(createdAt, kind, newTags, content, onReady)
|
||||
}
|
||||
|
||||
fun create(
|
||||
@ -196,6 +203,7 @@ class BookmarkListEvent(
|
||||
addresses?.forEach {
|
||||
tags.add(arrayOf("a", it.toTag()))
|
||||
}
|
||||
tags.add(arrayOf("alt", alt))
|
||||
|
||||
createPrivateTags(privEvents, privUsers, privAddresses, signer) { content ->
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), content, onReady)
|
||||
|
@ -27,13 +27,14 @@ class CalendarDateSlotEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 31922
|
||||
const val alt = "Full-day calendar event"
|
||||
|
||||
fun create(
|
||||
signer: NostrSigner,
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (CalendarDateSlotEvent) -> Unit
|
||||
) {
|
||||
val tags = emptyArray<Array<String>>()
|
||||
val tags = arrayOf(arrayOf("alt", alt))
|
||||
signer.sign(createdAt, kind, tags, "", onReady)
|
||||
}
|
||||
}
|
||||
|
@ -19,13 +19,14 @@ class CalendarEvent(
|
||||
) : BaseAddressableEvent(id, pubKey, createdAt, kind, tags, content, sig) {
|
||||
companion object {
|
||||
const val kind = 31924
|
||||
const val alt = "Calendar"
|
||||
|
||||
fun create(
|
||||
signer: NostrSigner,
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (CalendarEvent) -> Unit
|
||||
) {
|
||||
val tags = emptyArray<Array<String>>()
|
||||
val tags = arrayOf(arrayOf("alt", alt))
|
||||
signer.sign(createdAt, kind, tags, "", onReady)
|
||||
}
|
||||
}
|
||||
|
@ -29,13 +29,14 @@ class CalendarRSVPEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 31925
|
||||
const val alt = "Calendar event's invitation response"
|
||||
|
||||
fun create(
|
||||
signer: NostrSigner,
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (CalendarRSVPEvent) -> Unit
|
||||
) {
|
||||
val tags = emptyArray<Array<String>>()
|
||||
val tags = arrayOf(arrayOf("alt", alt))
|
||||
signer.sign(createdAt, kind, tags, "", onReady)
|
||||
}
|
||||
}
|
||||
|
@ -31,13 +31,14 @@ class CalendarTimeSlotEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 31923
|
||||
const val alt = "Calendar time-slot event"
|
||||
|
||||
fun create(
|
||||
signer: NostrSigner,
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (CalendarTimeSlotEvent) -> Unit
|
||||
) {
|
||||
val tags = emptyArray<Array<String>>()
|
||||
val tags = arrayOf(arrayOf("alt", alt))
|
||||
signer.sign(createdAt, kind, tags, "", onReady)
|
||||
}
|
||||
}
|
||||
|
@ -65,7 +65,11 @@ class ChannelCreateEvent(
|
||||
""
|
||||
}
|
||||
|
||||
signer.sign(createdAt, kind, emptyArray(), content, onReady)
|
||||
val tags = arrayOf(
|
||||
arrayOf("alt", "Public chat creation event ${channelInfo?.name?.let { "about ${it}" }}")
|
||||
)
|
||||
|
||||
signer.sign(createdAt, kind, tags, content, onReady)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -26,6 +26,7 @@ class ChannelHideMessageEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 43
|
||||
const val alt = "Hide message instruction for public chats"
|
||||
|
||||
fun create(
|
||||
reason: String,
|
||||
@ -35,9 +36,9 @@ class ChannelHideMessageEvent(
|
||||
onReady: (ChannelHideMessageEvent) -> Unit
|
||||
) {
|
||||
val tags =
|
||||
messagesToHide?.map {
|
||||
(messagesToHide?.map {
|
||||
arrayOf("e", it)
|
||||
}?.toTypedArray() ?: emptyArray()
|
||||
}?.toTypedArray() ?: emptyArray()) + arrayOf(arrayOf("alt", alt))
|
||||
|
||||
signer.sign(createdAt, kind, tags, reason, onReady)
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ class ChannelMessageEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 42
|
||||
const val alt = "Public chat message"
|
||||
|
||||
fun create(
|
||||
message: String,
|
||||
@ -66,6 +67,9 @@ class ChannelMessageEvent(
|
||||
//tags.add(arrayOf("nip94", it.toJson()))
|
||||
}
|
||||
}
|
||||
tags.add(
|
||||
arrayOf("alt", alt)
|
||||
)
|
||||
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), message, onReady)
|
||||
}
|
||||
|
@ -30,6 +30,7 @@ class ChannelMetadataEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 41
|
||||
const val alt = "This is a public chat definition update"
|
||||
|
||||
fun create(
|
||||
name: String?,
|
||||
@ -65,7 +66,10 @@ class ChannelMetadataEvent(
|
||||
""
|
||||
}
|
||||
|
||||
val tags = listOf(arrayOf("e", originalChannelIdHex, "", "root"))
|
||||
val tags = listOf(
|
||||
arrayOf("e", originalChannelIdHex, "", "root"),
|
||||
arrayOf("alt", "Public chat update to ${newChannelInfo?.name}")
|
||||
)
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), content, onReady)
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ class ChannelMuteUserEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 44
|
||||
const val alt = "Mute user instruction for public chats"
|
||||
|
||||
fun create(
|
||||
reason: String,
|
||||
@ -35,9 +36,9 @@ class ChannelMuteUserEvent(
|
||||
onReady: (ChannelMuteUserEvent) -> Unit
|
||||
) {
|
||||
val content = reason
|
||||
val tags = usersToMute?.map {
|
||||
val tags = (usersToMute?.map {
|
||||
arrayOf("p", it)
|
||||
}?.toTypedArray() ?: emptyArray()
|
||||
}?.toTypedArray() ?: emptyArray()) + arrayOf(arrayOf("alt", alt))
|
||||
|
||||
signer.sign(createdAt, kind, tags, content, onReady)
|
||||
}
|
||||
|
@ -49,6 +49,7 @@ class ChatMessageEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 14
|
||||
const val alt = "Direct message"
|
||||
|
||||
fun create(
|
||||
msg: String,
|
||||
@ -89,6 +90,7 @@ class ChatMessageEvent(
|
||||
subject?.let {
|
||||
tags.add(arrayOf("subject", it))
|
||||
}
|
||||
tags.add(arrayOf("alt", alt))
|
||||
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), msg, onReady)
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ class ClassifiedsEvent(
|
||||
companion object {
|
||||
const val kind = 30402
|
||||
private val imageExtensions = listOf("png", "jpg", "gif", "bmp", "jpeg", "webp", "svg")
|
||||
const val alt = "Classifieds listing"
|
||||
|
||||
fun create(
|
||||
dTag: String,
|
||||
@ -145,6 +146,7 @@ class ClassifiedsEvent(
|
||||
//tags.add(arrayOf("nip94", it.toJson()))
|
||||
}
|
||||
}
|
||||
tags.add(arrayOf("alt", alt))
|
||||
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), message, onReady)
|
||||
}
|
||||
|
@ -25,14 +25,16 @@ class CommunityDefinitionEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 34550
|
||||
const val alt = "Community definition"
|
||||
|
||||
fun create(
|
||||
signer: NostrSigner,
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (CommunityDefinitionEvent) -> Unit
|
||||
) {
|
||||
val tags = emptyArray<Array<String>>()
|
||||
signer.sign(createdAt, kind, tags, "", onReady)
|
||||
val tags = mutableListOf<Array<String>>()
|
||||
tags.add(arrayOf("alt", alt))
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), "", onReady)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -45,6 +45,7 @@ class CommunityPostApprovalEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 4550
|
||||
const val alt = "Community post approval"
|
||||
|
||||
fun create(
|
||||
approvedPost: Event,
|
||||
@ -59,8 +60,9 @@ class CommunityPostApprovalEvent(
|
||||
val replyToPost = arrayOf("e", approvedPost.id())
|
||||
val replyToAuthor = arrayOf("p", approvedPost.pubKey())
|
||||
val innerKind = arrayOf("k", "${approvedPost.kind()}")
|
||||
val alt = arrayOf("alt", alt)
|
||||
|
||||
val tags: Array<Array<String>> = arrayOf(communities, replyToPost, replyToAuthor, innerKind)
|
||||
val tags: Array<Array<String>> = arrayOf(communities, replyToPost, replyToAuthor, innerKind, alt)
|
||||
|
||||
signer.sign(createdAt, kind, tags, content, onReady)
|
||||
}
|
||||
|
@ -92,6 +92,7 @@ class ContactListEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 3
|
||||
const val alt = "Follow List"
|
||||
|
||||
fun createFromScratch(
|
||||
followUsers: List<Contact>,
|
||||
@ -282,7 +283,13 @@ class ContactListEvent(
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (ContactListEvent) -> Unit
|
||||
) {
|
||||
signer.sign(createdAt, kind, tags, content, onReady)
|
||||
val newTags = if (tags.any { it.size > 1 && it[0] == "alt" }) {
|
||||
tags
|
||||
} else {
|
||||
tags + arrayOf("alt", alt)
|
||||
}
|
||||
|
||||
signer.sign(createdAt, kind, newTags, content, onReady)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -21,10 +21,11 @@ class DeletionEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 5
|
||||
const val alt = "Deletion event"
|
||||
|
||||
fun create(deleteEvents: List<String>, signer: NostrSigner, createdAt: Long = TimeUtils.now(), onReady: (DeletionEvent) -> Unit) {
|
||||
val content = ""
|
||||
val tags = deleteEvents.map { arrayOf("e", it) }.toTypedArray()
|
||||
val tags = deleteEvents.map { arrayOf("e", it) }.plusElement(arrayOf("alt", alt)).toTypedArray()
|
||||
signer.sign(createdAt, kind, tags, content, onReady)
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ class EmojiPackEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 30030
|
||||
const val alt = "Emoji pack"
|
||||
|
||||
fun create(
|
||||
name: String = "",
|
||||
@ -30,6 +31,7 @@ class EmojiPackEvent(
|
||||
|
||||
val tags = mutableListOf<Array<String>>()
|
||||
tags.add(arrayOf("d", name))
|
||||
tags.add(arrayOf("alt", alt))
|
||||
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), content, onReady)
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ class EmojiPackSelectionEvent(
|
||||
companion object {
|
||||
const val kind = 10030
|
||||
const val fixedDTag = ""
|
||||
const val alt = "Emoji selection"
|
||||
|
||||
fun create(
|
||||
listOfEmojiPacks: List<ATag>?,
|
||||
@ -37,6 +38,8 @@ class EmojiPackSelectionEvent(
|
||||
tags.add(arrayOf("a", it.toTag()))
|
||||
}
|
||||
|
||||
tags.add(arrayOf("alt", alt))
|
||||
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), msg, onReady)
|
||||
}
|
||||
}
|
||||
|
@ -35,6 +35,7 @@ class FileHeaderEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 1063
|
||||
const val altDescription = "Verifiable file url"
|
||||
|
||||
private const val URL = "url"
|
||||
private const val ENCRYPTION_KEY = "aes-256-gcm"
|
||||
@ -70,7 +71,7 @@ class FileHeaderEvent(
|
||||
arrayOf(URL, url),
|
||||
magnetUri?.let { arrayOf(MAGNET_URI, it) },
|
||||
mimeType?.let { arrayOf(MIME_TYPE, it) },
|
||||
alt?.ifBlank { null }?.let { arrayOf(ALT, it) },
|
||||
alt?.ifBlank { null }?.let { arrayOf(ALT, it) } ?: arrayOf("alt", altDescription),
|
||||
hash?.let { arrayOf(HASH, it) },
|
||||
size?.let { arrayOf(FILE_SIZE, it) },
|
||||
dimensions?.let { arrayOf(DIMENSION, it) },
|
||||
|
@ -23,6 +23,7 @@ class FileServersEvent(
|
||||
companion object {
|
||||
const val kind = 10096
|
||||
const val fixedDTag = ""
|
||||
const val alt = "File servers used by the author"
|
||||
|
||||
fun create(
|
||||
listOfServers: List<String>,
|
||||
@ -36,6 +37,7 @@ class FileServersEvent(
|
||||
listOfServers.forEach {
|
||||
tags.add(arrayOf("server", it))
|
||||
}
|
||||
tags.add(arrayOf("alt", alt))
|
||||
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), msg, onReady)
|
||||
}
|
||||
|
@ -33,6 +33,7 @@ class FileStorageEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 1064
|
||||
const val alt = "Binary data"
|
||||
|
||||
private const val TYPE = "type"
|
||||
private const val DECRYPT = "decrypt"
|
||||
@ -49,7 +50,8 @@ class FileStorageEvent(
|
||||
onReady: (FileStorageEvent) -> Unit
|
||||
) {
|
||||
val tags = listOfNotNull(
|
||||
arrayOf(TYPE, mimeType)
|
||||
arrayOf(TYPE, mimeType),
|
||||
arrayOf("alt", alt)
|
||||
)
|
||||
|
||||
val content = encode(data)
|
||||
|
@ -31,6 +31,7 @@ class FileStorageHeaderEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 1065
|
||||
const val altDescription = "Descriptors for a binary file"
|
||||
|
||||
private const val ENCRYPTION_KEY = "aes-256-gcm"
|
||||
private const val MIME_TYPE = "m"
|
||||
@ -62,7 +63,7 @@ class FileStorageHeaderEvent(
|
||||
arrayOf("e", storageEvent.id),
|
||||
mimeType?.let { arrayOf(MIME_TYPE, mimeType) },
|
||||
hash?.let { arrayOf(HASH, it) },
|
||||
alt?.let { arrayOf(ALT, it) },
|
||||
alt?.let { arrayOf(ALT, it) } ?: arrayOf("alt", altDescription),
|
||||
size?.let { arrayOf(FILE_SIZE, it) },
|
||||
dimensions?.let { arrayOf(DIMENSION, it) },
|
||||
blurhash?.let { arrayOf(BLUR_HASH, it) },
|
||||
|
@ -29,6 +29,7 @@ class GenericRepostEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 16
|
||||
const val alt = "Generic repost"
|
||||
|
||||
fun create(
|
||||
boostedPost: EventInterface,
|
||||
@ -38,16 +39,17 @@ class GenericRepostEvent(
|
||||
) {
|
||||
val content = boostedPost.toJson()
|
||||
|
||||
val replyToPost = arrayOf("e", boostedPost.id())
|
||||
val replyToAuthor = arrayOf("p", boostedPost.pubKey())
|
||||
|
||||
var tags: List<Array<String>> = listOf(replyToPost, replyToAuthor)
|
||||
val tags = mutableListOf(
|
||||
arrayOf("e", boostedPost.id()),
|
||||
arrayOf("p", boostedPost.pubKey())
|
||||
)
|
||||
|
||||
if (boostedPost is AddressableEvent) {
|
||||
tags = tags + listOf(arrayOf("a", boostedPost.address().toTag()))
|
||||
tags.add(arrayOf("a", boostedPost.address().toTag()))
|
||||
}
|
||||
|
||||
tags = tags + listOf(arrayOf("k", "${boostedPost.kind()}"))
|
||||
tags.add(arrayOf("k", "${boostedPost.kind()}"))
|
||||
tags.add(arrayOf("alt", alt))
|
||||
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), content, onReady)
|
||||
}
|
||||
|
@ -62,6 +62,7 @@ class GiftWrapEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 1059
|
||||
const val alt = "Encrypted event"
|
||||
|
||||
fun create(
|
||||
event: Event,
|
||||
@ -71,7 +72,7 @@ class GiftWrapEvent(
|
||||
) {
|
||||
val signer = NostrSignerInternal(KeyPair()) // GiftWrap is always a random key
|
||||
val serializedContent = toJson(event)
|
||||
val tags = arrayOf(arrayOf("p", recipientPubKey))
|
||||
val tags = arrayOf(arrayOf("p", recipientPubKey), arrayOf("alt", alt))
|
||||
|
||||
signer.nip44Encrypt(serializedContent, recipientPubKey) {
|
||||
signer.sign(createdAt, kind, tags, it, onReady)
|
||||
|
@ -25,6 +25,7 @@ class HighlightEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 9802
|
||||
const val alt = "Highlight/quote event"
|
||||
|
||||
fun create(
|
||||
msg: String,
|
||||
@ -32,7 +33,7 @@ class HighlightEvent(
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (HighlightEvent) -> Unit
|
||||
) {
|
||||
signer.sign(createdAt, kind, emptyArray(), msg, onReady)
|
||||
signer.sign(createdAt, kind, arrayOf(arrayOf("alt", alt)), msg, onReady)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ class LiveActivitiesChatMessageEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 1311
|
||||
const val alt = "Live activity chat message"
|
||||
|
||||
fun create(
|
||||
message: String,
|
||||
@ -86,6 +87,7 @@ class LiveActivitiesChatMessageEvent(
|
||||
//tags.add(arrayOf("nip94", it.toJson()))
|
||||
}
|
||||
}
|
||||
tags.add(arrayOf("alt", alt))
|
||||
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), content, onReady)
|
||||
}
|
||||
|
@ -45,6 +45,7 @@ class LiveActivitiesEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 30311
|
||||
const val alt = "Live activity event"
|
||||
|
||||
const val STATUS_LIVE = "live"
|
||||
const val STATUS_PLANNED = "planned"
|
||||
@ -55,7 +56,7 @@ class LiveActivitiesEvent(
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (LiveActivitiesEvent) -> Unit
|
||||
) {
|
||||
val tags = emptyArray<Array<String>>()
|
||||
val tags = arrayOf(arrayOf("alt", alt))
|
||||
signer.sign(createdAt, kind, tags, "", onReady)
|
||||
}
|
||||
}
|
||||
|
@ -63,6 +63,7 @@ class LnZapEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 9735
|
||||
const val alt = "Zap event"
|
||||
}
|
||||
|
||||
enum class ZapType() {
|
||||
|
@ -56,6 +56,7 @@ class LnZapPaymentRequestEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 23194
|
||||
const val alt = "Zap payment request"
|
||||
|
||||
fun create(
|
||||
lnInvoice: String,
|
||||
@ -66,7 +67,7 @@ class LnZapPaymentRequestEvent(
|
||||
) {
|
||||
val serializedRequest = mapper.writeValueAsString(PayInvoiceMethod.create(lnInvoice))
|
||||
|
||||
val tags = arrayOf(arrayOf("p", walletServicePubkey))
|
||||
val tags = arrayOf(arrayOf("p", walletServicePubkey), arrayOf("alt", alt))
|
||||
|
||||
signer.nip04Encrypt(
|
||||
serializedRequest,
|
||||
|
@ -63,6 +63,7 @@ class LnZapPaymentResponseEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 23195
|
||||
const val alt = "Zap payment response"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -28,6 +28,7 @@ class LnZapPrivateEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 9733
|
||||
const val alt = "Private zap"
|
||||
|
||||
fun create(
|
||||
signer: NostrSigner,
|
||||
|
@ -74,6 +74,7 @@ class LnZapRequestEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 9734
|
||||
const val alt = "Zap request"
|
||||
|
||||
fun create(
|
||||
originalNote: EventInterface,
|
||||
@ -91,7 +92,8 @@ class LnZapRequestEvent(
|
||||
var tags = listOf(
|
||||
arrayOf("e", originalNote.id()),
|
||||
arrayOf("p", toUserPubHex ?: originalNote.pubKey()),
|
||||
arrayOf("relays") + relays
|
||||
arrayOf("relays") + relays,
|
||||
arrayOf("alt", alt)
|
||||
)
|
||||
if (originalNote is AddressableEvent) {
|
||||
tags = tags + listOf(arrayOf("a", originalNote.address().toTag()))
|
||||
|
@ -36,6 +36,7 @@ class LongTextNoteEvent(
|
||||
|
||||
fun create(
|
||||
msg: String,
|
||||
title: String?,
|
||||
replyTos: List<String>?,
|
||||
mentions: List<String>?,
|
||||
signer: NostrSigner,
|
||||
@ -49,6 +50,10 @@ class LongTextNoteEvent(
|
||||
mentions?.forEach {
|
||||
tags.add(arrayOf("p", it))
|
||||
}
|
||||
title?.let {
|
||||
tags.add(arrayOf("title", it))
|
||||
}
|
||||
tags.add(arrayOf("alt","Blog post: $title"))
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), msg, onReady)
|
||||
}
|
||||
}
|
||||
|
@ -152,6 +152,7 @@ class MetadataEvent(
|
||||
|
||||
fun create(
|
||||
contactMetaData: String,
|
||||
newName: String,
|
||||
identities: List<IdentityClaim>,
|
||||
signer: NostrSigner,
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
@ -159,6 +160,10 @@ class MetadataEvent(
|
||||
) {
|
||||
val tags = mutableListOf<Array<String>>()
|
||||
|
||||
tags.add(
|
||||
arrayOf("alt", "User profile for ${newName}")
|
||||
)
|
||||
|
||||
identities.forEach {
|
||||
tags.add(arrayOf("i", it.platformIdentity(), it.proof))
|
||||
}
|
||||
|
@ -54,6 +54,7 @@ class MuteListEvent(
|
||||
companion object {
|
||||
const val kind = 10000
|
||||
const val fixedDTag = ""
|
||||
const val alt = "Mute List"
|
||||
|
||||
fun blockListFor(pubKeyHex: HexKey): String {
|
||||
return "10000:$pubKeyHex:"
|
||||
@ -209,7 +210,13 @@ class MuteListEvent(
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (MuteListEvent) -> Unit
|
||||
) {
|
||||
signer.sign(createdAt, kind, tags, content, onReady)
|
||||
val newTags = if (tags.any { it.size > 1 && it[0] == "alt" }) {
|
||||
tags
|
||||
} else {
|
||||
tags + arrayOf("alt", alt)
|
||||
}
|
||||
|
||||
signer.sign(createdAt, kind, newTags, content, onReady)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,13 +23,14 @@ class NNSEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 30053
|
||||
const val alt = "DNS records"
|
||||
|
||||
fun create(
|
||||
signer: NostrSigner,
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (NNSEvent) -> Unit
|
||||
) {
|
||||
val tags = emptyArray<Array<String>>()
|
||||
val tags = arrayOf(arrayOf("alt", alt))
|
||||
signer.sign(createdAt, kind, tags, "", onReady)
|
||||
}
|
||||
}
|
||||
|
@ -87,6 +87,7 @@ class PeopleListEvent(
|
||||
companion object {
|
||||
const val kind = 30000
|
||||
const val blockList = "mute"
|
||||
const val alt = "List of people"
|
||||
|
||||
fun blockListFor(pubKeyHex: HexKey): String {
|
||||
return "30000:$pubKeyHex:$blockList"
|
||||
@ -242,7 +243,13 @@ class PeopleListEvent(
|
||||
createdAt: Long = TimeUtils.now(),
|
||||
onReady: (PeopleListEvent) -> Unit
|
||||
) {
|
||||
signer.sign(createdAt, kind, tags, content, onReady)
|
||||
val newTags = if (tags.any { it.size > 1 && it[0] == "alt" }) {
|
||||
tags
|
||||
} else {
|
||||
tags + arrayOf("alt", alt)
|
||||
}
|
||||
|
||||
signer.sign(createdAt, kind, newTags, content, onReady)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ class PinListEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 33888
|
||||
const val alt = "Pinned Posts"
|
||||
|
||||
fun create(
|
||||
pins: List<String>,
|
||||
@ -33,6 +34,7 @@ class PinListEvent(
|
||||
pins.forEach {
|
||||
tags.add(arrayOf("pin", it))
|
||||
}
|
||||
tags.add(arrayOf("alt", alt))
|
||||
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), "", onReady)
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ class PollNoteEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 6969
|
||||
const val alt = "Poll event"
|
||||
|
||||
fun create(
|
||||
msg: String,
|
||||
@ -105,6 +106,7 @@ class PollNoteEvent(
|
||||
//tags.add(arrayOf("nip94", it.toJson()))
|
||||
}
|
||||
}
|
||||
tags.add(arrayOf("alt", alt))
|
||||
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), msg, onReady)
|
||||
}
|
||||
|
@ -90,7 +90,7 @@ class PrivateDmEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 4
|
||||
|
||||
const val alt = "Private Message"
|
||||
const val nip18Advertisement = "[//]: # (nip18)\n"
|
||||
|
||||
fun create(
|
||||
@ -131,6 +131,7 @@ class PrivateDmEvent(
|
||||
geohash?.let {
|
||||
tags.addAll(geohashMipMap(it))
|
||||
}
|
||||
tags.add(arrayOf("alt", alt))
|
||||
|
||||
signer.nip04Encrypt(message, recipientPubKey) { content ->
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), content, onReady)
|
||||
|
@ -22,6 +22,7 @@ class RelaySetEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 30022
|
||||
const val alt = "Relay list"
|
||||
|
||||
fun create(
|
||||
relays: List<String>,
|
||||
@ -33,6 +34,7 @@ class RelaySetEvent(
|
||||
relays.forEach {
|
||||
tags.add(arrayOf("r", it))
|
||||
}
|
||||
tags.add(arrayOf("alt", alt))
|
||||
|
||||
signer.sign(createdAt, kind, tags.toTypedArray(), "", onReady)
|
||||
}
|
||||
|
@ -69,9 +69,11 @@ class ReportEvent(
|
||||
var tags: Array<Array<String>> = arrayOf(reportPostTag, reportAuthorTag)
|
||||
|
||||
if (reportedPost is AddressableEvent) {
|
||||
tags = tags + listOf(arrayOf("a", reportedPost.address().toTag()))
|
||||
tags += listOf(arrayOf("a", reportedPost.address().toTag()))
|
||||
}
|
||||
|
||||
tags += listOf(arrayOf("alt", "Report for ${type.name}"))
|
||||
|
||||
signer.sign(createdAt, kind, tags, content, onReady)
|
||||
}
|
||||
|
||||
@ -85,8 +87,9 @@ class ReportEvent(
|
||||
val content = ""
|
||||
|
||||
val reportAuthorTag = arrayOf("p", reportedUser, type.name.lowercase())
|
||||
val alt = arrayOf("alt", "Report for ${type.name}")
|
||||
|
||||
val tags: Array<Array<String>> = arrayOf(reportAuthorTag)
|
||||
val tags: Array<Array<String>> = arrayOf(reportAuthorTag, alt)
|
||||
signer.sign(createdAt, kind, tags, content, onReady)
|
||||
}
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ class RepostEvent(
|
||||
|
||||
companion object {
|
||||
const val kind = 6
|
||||
const val alt = "Repost event"
|
||||
|
||||
fun create(
|
||||
boostedPost: EventInterface,
|
||||
@ -44,9 +45,11 @@ class RepostEvent(
|
||||
var tags: Array<Array<String>> = arrayOf(replyToPost, replyToAuthor)
|
||||
|
||||
if (boostedPost is AddressableEvent) {
|
||||
tags = tags + listOf(arrayOf("a", boostedPost.address().toTag()))
|
||||
tags += listOf(arrayOf("a", boostedPost.address().toTag()))
|
||||
}
|
||||
|
||||
tags += listOf(arrayOf("alt", alt))
|
||||
|
||||
signer.sign(createdAt, kind, tags, content, onReady)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user