refactor
This commit is contained in:
parent
28ec943a52
commit
78725c1d14
45 changed files with 698 additions and 766 deletions
|
|
@ -1,26 +1,22 @@
|
|||
import client from '@/services/client.service'
|
||||
import { TImageInfo } from '@/types'
|
||||
import { TEmoji, TImageInfo } from '@/types'
|
||||
import { isBlurhashValid } from 'blurhash'
|
||||
import { Event, nip19 } from 'nostr-tools'
|
||||
import { nip19 } from 'nostr-tools'
|
||||
import { isValidPubkey } from './pubkey'
|
||||
import { normalizeHttpUrl } from './url'
|
||||
|
||||
export function isSameTag(tag1: string[], tag2: string[]) {
|
||||
if (tag1.length !== tag2.length) return false
|
||||
for (let i = 0; i < tag1.length; i++) {
|
||||
if (tag1[i] !== tag2[i]) return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
export function tagNameEquals(tagName: string) {
|
||||
return (tag: string[]) => tag[0] === tagName
|
||||
}
|
||||
|
||||
export function isReplyETag([tagName, , , marker]: string[]) {
|
||||
return tagName === 'e' && marker === 'reply'
|
||||
}
|
||||
|
||||
export function isRootETag([tagName, , , marker]: string[]) {
|
||||
return tagName === 'e' && marker === 'root'
|
||||
}
|
||||
|
||||
export function isMentionETag([tagName, , , marker]: string[]) {
|
||||
return tagName === 'e' && marker === 'mention'
|
||||
}
|
||||
|
||||
export function generateEventIdFromETag(tag: string[]) {
|
||||
export function generateBech32IdFromETag(tag: string[]) {
|
||||
try {
|
||||
const [, id, relay, , author] = tag
|
||||
return nip19.neventEncode({ id, relays: relay ? [relay] : undefined, author })
|
||||
|
|
@ -29,7 +25,7 @@ export function generateEventIdFromETag(tag: string[]) {
|
|||
}
|
||||
}
|
||||
|
||||
export function generateEventIdFromATag(tag: string[]) {
|
||||
export function generateBech32IdFromATag(tag: string[]) {
|
||||
try {
|
||||
const [, coordinate, relay] = tag
|
||||
const [kind, pubkey, identifier] = coordinate.split(':')
|
||||
|
|
@ -44,12 +40,7 @@ export function generateEventIdFromATag(tag: string[]) {
|
|||
}
|
||||
}
|
||||
|
||||
export function generateEventId(event: Pick<Event, 'id' | 'pubkey'>) {
|
||||
const relay = client.getEventHint(event.id)
|
||||
return nip19.neventEncode({ id: event.id, author: event.pubkey, relays: [relay] })
|
||||
}
|
||||
|
||||
export function extractImageInfoFromTag(tag: string[], pubkey?: string): TImageInfo | null {
|
||||
export function getImageInfoFromImetaTag(tag: string[], pubkey?: string): TImageInfo | null {
|
||||
if (tag[0] !== 'imeta') return null
|
||||
const urlItem = tag.find((item) => item.startsWith('url '))
|
||||
const url = urlItem?.slice(4)
|
||||
|
|
@ -75,7 +66,7 @@ export function extractImageInfoFromTag(tag: string[], pubkey?: string): TImageI
|
|||
return image
|
||||
}
|
||||
|
||||
export function extractPubkeysFromEventTags(tags: string[][]) {
|
||||
export function getPubkeysFromPTags(tags: string[][]) {
|
||||
return Array.from(
|
||||
new Set(
|
||||
tags
|
||||
|
|
@ -87,10 +78,18 @@ export function extractPubkeysFromEventTags(tags: string[][]) {
|
|||
)
|
||||
}
|
||||
|
||||
export function isSameTag(tag1: string[], tag2: string[]) {
|
||||
if (tag1.length !== tag2.length) return false
|
||||
for (let i = 0; i < tag1.length; i++) {
|
||||
if (tag1[i] !== tag2[i]) return false
|
||||
}
|
||||
return true
|
||||
export function getEmojiInfosFromEmojiTags(tags: string[][] = []) {
|
||||
return tags
|
||||
.map((tag) => {
|
||||
if (tag.length < 3 || tag[0] !== 'emoji') return null
|
||||
return { shortcode: tag[1], url: tag[2] }
|
||||
})
|
||||
.filter(Boolean) as TEmoji[]
|
||||
}
|
||||
|
||||
export function getServersFromServerTags(tags: string[][] = []) {
|
||||
return tags
|
||||
.filter(tagNameEquals('server'))
|
||||
.map(([, url]) => (url ? normalizeHttpUrl(url) : ''))
|
||||
.filter(Boolean)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue