feat: sync relay sets

This commit is contained in:
codytseng
2025-01-07 23:26:05 +08:00
parent 4343765aba
commit 7bd5b915eb
38 changed files with 1069 additions and 686 deletions

View File

@@ -1,5 +1,5 @@
import { COMMENT_EVENT_KIND, PICTURE_EVENT_KIND } from '@/constants'
import { TDraftEvent } from '@/types'
import { TDraftEvent, TRelaySet } from '@/types'
import dayjs from 'dayjs'
import { Event, kinds } from 'nostr-tools'
import {
@@ -82,6 +82,20 @@ export async function createShortTextNoteDraftEvent(
}
}
// https://github.com/nostr-protocol/nips/blob/master/51.md
export function createRelaySetDraftEvent(relaySet: TRelaySet): TDraftEvent {
return {
kind: kinds.Relaysets,
content: '',
tags: [
['d', relaySet.id],
['title', relaySet.name],
...relaySet.relayUrls.map((url) => ['relay', url])
],
created_at: dayjs().unix()
}
}
export async function createPictureNoteDraftEvent(
content: string,
options: {

View File

@@ -64,6 +64,18 @@ export function getUsingClient(event: Event) {
return event.tags.find(tagNameEquals('client'))?.[1]
}
export function getFollowingsFromFollowListEvent(event: Event) {
return Array.from(
new Set(
event.tags
.filter(tagNameEquals('p'))
.map(([, pubkey]) => pubkey)
.filter(Boolean)
.reverse()
)
)
}
export async function extractMentions(content: string, parentEvent?: Event) {
const pubkeySet = new Set<string>()
const relatedEventIdSet = new Set<string>()

9
src/lib/random.ts Normal file
View File

@@ -0,0 +1,9 @@
const SEED = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
export function randomString(len = 32) {
let str = ''
for (let i = 0; i < len; i++) {
str += SEED[Math.floor(Math.random() * SEED.length)]
}
return str
}