You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
6.0 KiB
140 lines
6.0 KiB
import { ExtendedKind } from '@/constants' |
|
import { getParentATag, getParentETag, getQuotedReferenceFromQTags } from '@/lib/event' |
|
import type { Event } from 'nostr-tools' |
|
import { kinds } from 'nostr-tools' |
|
|
|
/** |
|
* Get the description for a given kind number |
|
* @param kind - The kind number |
|
* @param event - When set, refines kind 1 (e.g. NIP-18 quote without thread parent → "Quote Note") |
|
* @returns An object with the kind number and description |
|
*/ |
|
export function getKindDescription( |
|
kind: number, |
|
event?: Event |
|
): { number: number; description: string } { |
|
switch (kind) { |
|
case kinds.ShortTextNote: |
|
if ( |
|
event && |
|
getQuotedReferenceFromQTags(event) && |
|
!getParentETag(event) && |
|
!getParentATag(event) |
|
) { |
|
return { number: 1, description: 'Quote Note' } |
|
} |
|
return { number: 1, description: 'Short Text Note' } |
|
case ExtendedKind.COMMENT: |
|
return { number: 1111, description: 'Comment' } |
|
case ExtendedKind.VOICE: |
|
return { number: 1222, description: 'Voice Note' } |
|
case ExtendedKind.VOICE_COMMENT: |
|
return { number: 1244, description: 'Voice Comment' } |
|
case ExtendedKind.PICTURE: |
|
return { number: 20, description: 'Picture Note' } |
|
case ExtendedKind.VIDEO: |
|
return { number: 21, description: 'Video Note' } |
|
case ExtendedKind.SHORT_VIDEO: |
|
return { number: 22, description: 'Short Video Note' } |
|
case ExtendedKind.VIDEO_ADDRESSABLE: |
|
return { number: 34235, description: 'Video Note (addressable)' } |
|
case kinds.LongFormArticle: |
|
return { number: 30023, description: 'Long-form Article' } |
|
case ExtendedKind.WIKI_ARTICLE: |
|
return { number: 30818, description: 'Wiki Article (AsciiDoc)' } |
|
case ExtendedKind.WIKI_ARTICLE_MARKDOWN: |
|
return { number: 30817, description: 'Wiki Article (Markdown)' } |
|
case ExtendedKind.PUBLICATION_CONTENT: |
|
return { number: 30041, description: 'Publication Content' } |
|
case ExtendedKind.CITATION_INTERNAL: |
|
return { number: 30, description: 'Internal Citation' } |
|
case ExtendedKind.CITATION_EXTERNAL: |
|
return { number: 31, description: 'External Web Citation' } |
|
case ExtendedKind.CITATION_HARDCOPY: |
|
return { number: 32, description: 'Hardcopy Citation' } |
|
case ExtendedKind.CITATION_PROMPT: |
|
return { number: 33, description: 'Prompt Citation' } |
|
case kinds.Highlights: |
|
return { number: 9802, description: 'Highlight' } |
|
case ExtendedKind.POLL: |
|
return { number: 1068, description: 'Poll' } |
|
case ExtendedKind.ZAP_POLL: |
|
return { number: 6969, description: 'Zap poll' } |
|
case ExtendedKind.PUBLIC_MESSAGE: |
|
return { number: 24, description: 'Public Message' } |
|
case ExtendedKind.DISCUSSION: |
|
return { number: 11, description: 'Discussion' } |
|
case kinds.Metadata: |
|
return { number: 0, description: 'Profile metadata' } |
|
case kinds.Repost: |
|
return { number: 6, description: 'Repost' } |
|
case ExtendedKind.GENERIC_REPOST: |
|
return { number: 16, description: 'Generic repost' } |
|
case kinds.Reaction: |
|
return { number: 7, description: 'Reaction' } |
|
case ExtendedKind.EXTERNAL_REACTION: |
|
return { number: 17, description: 'External reaction' } |
|
case kinds.CommunityDefinition: |
|
return { number: 34550, description: 'Community' } |
|
case kinds.LiveEvent: |
|
return { number: 30311, description: 'Live event' } |
|
case ExtendedKind.ZAP_REQUEST: |
|
return { number: 9734, description: 'Zap request' } |
|
case ExtendedKind.ZAP_RECEIPT: |
|
return { number: 9735, description: 'Zap receipt' } |
|
case ExtendedKind.RELAY_REVIEW: |
|
return { number: 31987, description: 'Relay review' } |
|
case ExtendedKind.PUBLICATION: |
|
return { number: 30040, description: 'Publication' } |
|
case ExtendedKind.CALENDAR_EVENT_DATE: |
|
return { number: 31922, description: 'Calendar event (date)' } |
|
case ExtendedKind.CALENDAR_EVENT_TIME: |
|
return { number: 31923, description: 'Calendar event (time)' } |
|
case ExtendedKind.CALENDAR_EVENT_RSVP: |
|
return { number: 31925, description: 'Calendar RSVP' } |
|
case ExtendedKind.POLL_RESPONSE: |
|
return { number: 1018, description: 'Poll vote' } |
|
case ExtendedKind.FOLLOW_PACK: |
|
return { number: 39089, description: 'Follow pack' } |
|
case ExtendedKind.GROUP_METADATA: |
|
return { number: 39000, description: 'Group metadata' } |
|
case ExtendedKind.APPLICATION_HANDLER_INFO: |
|
return { number: 31990, description: 'Application handler' } |
|
case ExtendedKind.APPLICATION_HANDLER_RECOMMENDATION: |
|
return { number: 31989, description: 'Handler recommendation' } |
|
case ExtendedKind.SPELL: |
|
return { number: 777, description: 'Spell / filter' } |
|
case ExtendedKind.RSS_THREAD_ROOT: |
|
return { number: 99999, description: 'Web article thread' } |
|
case ExtendedKind.FILE_METADATA: |
|
return { number: 1063, description: 'File metadata' } |
|
case kinds.Report: |
|
case ExtendedKind.REPORT: |
|
return { number: 1984, description: 'Report' } |
|
case kinds.Label: |
|
return { number: 1985, description: 'Label' } |
|
case kinds.BookmarkList: |
|
return { number: 10003, description: 'Bookmark list' } |
|
case kinds.Pinlist: |
|
return { number: 10001, description: 'Pin list' } |
|
case kinds.Genericlists: |
|
return { number: 30001, description: 'List' } |
|
case kinds.Bookmarksets: |
|
return { number: 30003, description: 'Bookmark set' } |
|
case kinds.Curationsets: |
|
return { number: 30004, description: 'Curation set' } |
|
case kinds.BadgeAward: |
|
return { number: 8, description: 'Badge award' } |
|
case ExtendedKind.WEB_BOOKMARK: |
|
return { number: 39701, description: 'Web bookmark' } |
|
case ExtendedKind.GIT_REPO_ANNOUNCEMENT: |
|
return { number: 30617, description: 'Git repository' } |
|
case ExtendedKind.GIT_ISSUE: |
|
return { number: 1621, description: 'Git issue' } |
|
case ExtendedKind.GIT_RELEASE: |
|
return { number: 1642, description: 'Git release' } |
|
default: |
|
return { number: kind, description: `Event (kind ${kind})` } |
|
} |
|
} |
|
|
|
|