feat: sync relay sets
This commit is contained in:
@@ -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: {
|
||||
|
||||
@@ -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
9
src/lib/random.ts
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user