|
|
|
@ -229,8 +229,6 @@ export async function createShortTextNoteDraftEvent( |
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
/** NIP-94 imeta rows from uploads (audio/video/images as plain URLs in content). */ |
|
|
|
/** NIP-94 imeta rows from uploads (audio/video/images as plain URLs in content). */ |
|
|
|
mediaImetaTags?: string[][] |
|
|
|
mediaImetaTags?: string[][] |
|
|
|
} = {} |
|
|
|
} = {} |
|
|
|
@ -280,9 +278,6 @@ export async function createShortTextNoteDraftEvent( |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (options.addQuietTag && options.quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(options.quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const baseDraft = { |
|
|
|
const baseDraft = { |
|
|
|
kind: kinds.ShortTextNote, |
|
|
|
kind: kinds.ShortTextNote, |
|
|
|
@ -317,8 +312,6 @@ export async function createCommentDraftEvent( |
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
mediaImetaTags?: string[][] |
|
|
|
mediaImetaTags?: string[][] |
|
|
|
} = {} |
|
|
|
} = {} |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
@ -403,9 +396,6 @@ export async function createCommentDraftEvent( |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (options.addQuietTag && options.quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(options.quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const baseDraft = { |
|
|
|
const baseDraft = { |
|
|
|
kind: ExtendedKind.COMMENT, |
|
|
|
kind: ExtendedKind.COMMENT, |
|
|
|
@ -425,8 +415,6 @@ export async function createPublicMessageReplyDraftEvent( |
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
mediaImetaTags?: string[][] // Allow media imeta tags for audio/video
|
|
|
|
mediaImetaTags?: string[][] // Allow media imeta tags for audio/video
|
|
|
|
} = {} |
|
|
|
} = {} |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
@ -478,9 +466,6 @@ export async function createPublicMessageReplyDraftEvent( |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (options.addQuietTag && options.quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(options.quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// console.log('📝 Final public message reply draft tags:', {
|
|
|
|
// console.log('📝 Final public message reply draft tags:', {
|
|
|
|
// pTags: tags.filter(tag => tag[0] === 'p'),
|
|
|
|
// pTags: tags.filter(tag => tag[0] === 'p'),
|
|
|
|
@ -505,8 +490,6 @@ export async function createPublicMessageDraftEvent( |
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
mediaImetaTags?: string[][] // Allow media imeta tags for audio/video
|
|
|
|
mediaImetaTags?: string[][] // Allow media imeta tags for audio/video
|
|
|
|
} = {} |
|
|
|
} = {} |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
@ -538,9 +521,6 @@ export async function createPublicMessageDraftEvent( |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (options.addQuietTag && options.quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(options.quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const baseDraft = { |
|
|
|
const baseDraft = { |
|
|
|
kind: ExtendedKind.PUBLIC_MESSAGE, |
|
|
|
kind: ExtendedKind.PUBLIC_MESSAGE, |
|
|
|
@ -1146,16 +1126,12 @@ export async function createPollDraftEvent( |
|
|
|
isNsfw, |
|
|
|
isNsfw, |
|
|
|
addExpirationTag, |
|
|
|
addExpirationTag, |
|
|
|
expirationMonths, |
|
|
|
expirationMonths, |
|
|
|
addQuietTag, |
|
|
|
|
|
|
|
quietDays, |
|
|
|
|
|
|
|
mediaImetaTags |
|
|
|
mediaImetaTags |
|
|
|
}: { |
|
|
|
}: { |
|
|
|
addClientTag?: boolean // accepted for API compat; client tag is added in publish()
|
|
|
|
addClientTag?: boolean // accepted for API compat; client tag is added in publish()
|
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
mediaImetaTags?: string[][] |
|
|
|
mediaImetaTags?: string[][] |
|
|
|
} = {} |
|
|
|
} = {} |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
@ -1210,9 +1186,6 @@ export async function createPollDraftEvent( |
|
|
|
tags.push(buildExpirationTag(expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (addQuietTag && quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const baseDraft = { |
|
|
|
const baseDraft = { |
|
|
|
content: transformedEmojisContent.trim(), |
|
|
|
content: transformedEmojisContent.trim(), |
|
|
|
@ -1658,10 +1631,6 @@ function buildExpirationTag(months: number): string[] { |
|
|
|
return ['expiration', expirationTime.toString()] |
|
|
|
return ['expiration', expirationTime.toString()] |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function buildQuietTag(days: number): string[] { |
|
|
|
|
|
|
|
const quietEndTime = dayjs().add(days, 'day').unix() |
|
|
|
|
|
|
|
return ['quiet', quietEndTime.toString()] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function trimTagEnd(tag: string[]) { |
|
|
|
function trimTagEnd(tag: string[]) { |
|
|
|
let endIndex = tag.length - 1 |
|
|
|
let endIndex = tag.length - 1 |
|
|
|
@ -1691,8 +1660,6 @@ export async function createHighlightDraftEvent( |
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
mediaImetaTags?: string[][] |
|
|
|
mediaImetaTags?: string[][] |
|
|
|
} |
|
|
|
} |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
@ -1818,9 +1785,6 @@ export async function createHighlightDraftEvent( |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (options?.addQuietTag && options?.quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(options.quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mergeUploadImetaTagsInto(tags, options?.mediaImetaTags) |
|
|
|
mergeUploadImetaTagsInto(tags, options?.mediaImetaTags) |
|
|
|
|
|
|
|
|
|
|
|
@ -1843,8 +1807,6 @@ export async function createVoiceDraftEvent( |
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
/** Extra NIP-94 rows from uploads (merged after content-derived imeta, deduped by URL). */ |
|
|
|
/** Extra NIP-94 rows from uploads (merged after content-derived imeta, deduped by URL). */ |
|
|
|
mediaImetaTags?: string[][] |
|
|
|
mediaImetaTags?: string[][] |
|
|
|
} = {} |
|
|
|
} = {} |
|
|
|
@ -1871,9 +1833,6 @@ export async function createVoiceDraftEvent( |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (options.addQuietTag && options.quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(options.quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return setDraftEventCache({ |
|
|
|
return setDraftEventCache({ |
|
|
|
kind: ExtendedKind.VOICE, |
|
|
|
kind: ExtendedKind.VOICE, |
|
|
|
@ -1894,8 +1853,6 @@ export async function createVoiceCommentDraftEvent( |
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
/** NIP-94 rows from file upload (merged before `imetaTags`; deduped by URL). */ |
|
|
|
/** NIP-94 rows from file upload (merged before `imetaTags`; deduped by URL). */ |
|
|
|
mediaImetaTags?: string[][] |
|
|
|
mediaImetaTags?: string[][] |
|
|
|
} = {} |
|
|
|
} = {} |
|
|
|
@ -1979,9 +1936,6 @@ export async function createVoiceCommentDraftEvent( |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (options.addQuietTag && options.quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(options.quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return setDraftEventCache({ |
|
|
|
return setDraftEventCache({ |
|
|
|
kind: ExtendedKind.VOICE_COMMENT, |
|
|
|
kind: ExtendedKind.VOICE_COMMENT, |
|
|
|
@ -2000,8 +1954,6 @@ export async function createPictureDraftEvent( |
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
mediaImetaTags?: string[][] |
|
|
|
mediaImetaTags?: string[][] |
|
|
|
} = {} |
|
|
|
} = {} |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
@ -2026,9 +1978,6 @@ export async function createPictureDraftEvent( |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (options.addQuietTag && options.quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(options.quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Kind 20 caption is user text only; the file URL lives in `imeta`. Many indexers and caches
|
|
|
|
// Kind 20 caption is user text only; the file URL lives in `imeta`. Many indexers and caches
|
|
|
|
// still deliver full tags, but mirroring the URL in `content` matches kind-1-style clients and
|
|
|
|
// still deliver full tags, but mirroring the URL in `content` matches kind-1-style clients and
|
|
|
|
@ -2060,8 +2009,6 @@ export async function createVideoDraftEvent( |
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
mediaImetaTags?: string[][] |
|
|
|
mediaImetaTags?: string[][] |
|
|
|
} = {} |
|
|
|
} = {} |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
@ -2086,9 +2033,6 @@ export async function createVideoDraftEvent( |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (options.addQuietTag && options.quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(options.quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return setDraftEventCache({ |
|
|
|
return setDraftEventCache({ |
|
|
|
kind: videoKind, // NIP-71: 21, 22, or 34235
|
|
|
|
kind: videoKind, // NIP-71: 21, 22, or 34235
|
|
|
|
@ -2113,8 +2057,6 @@ export async function createLongFormArticleDraftEvent( |
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
} = {} |
|
|
|
} = {} |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
const { content: transformedEmojisContent, emojiTags } = transformCustomEmojisInContent(content) |
|
|
|
const { content: transformedEmojisContent, emojiTags } = transformCustomEmojisInContent(content) |
|
|
|
@ -2161,9 +2103,6 @@ export async function createLongFormArticleDraftEvent( |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (options.addQuietTag && options.quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(options.quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return setDraftEventCache({ |
|
|
|
return setDraftEventCache({ |
|
|
|
kind: kinds.LongFormArticle, |
|
|
|
kind: kinds.LongFormArticle, |
|
|
|
@ -2194,8 +2133,6 @@ export async function createWikiArticleDraftEvent( |
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
const { content: transformedEmojisContent, emojiTags } = transformCustomEmojisInContent(content) |
|
|
|
const { content: transformedEmojisContent, emojiTags } = transformCustomEmojisInContent(content) |
|
|
|
@ -2231,9 +2168,6 @@ export async function createWikiArticleDraftEvent( |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (options.addQuietTag && options.quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(options.quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return setDraftEventCache({ |
|
|
|
return setDraftEventCache({ |
|
|
|
kind: ExtendedKind.WIKI_ARTICLE, |
|
|
|
kind: ExtendedKind.WIKI_ARTICLE, |
|
|
|
@ -2256,8 +2190,6 @@ export async function createNostrSpecificationDraftEvent( |
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
const { content: transformedEmojisContent, emojiTags } = transformCustomEmojisInContent(content) |
|
|
|
const { content: transformedEmojisContent, emojiTags } = transformCustomEmojisInContent(content) |
|
|
|
@ -2295,9 +2227,6 @@ export async function createNostrSpecificationDraftEvent( |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (options.addQuietTag && options.quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(options.quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return setDraftEventCache({ |
|
|
|
return setDraftEventCache({ |
|
|
|
kind: ExtendedKind.NOSTR_SPECIFICATION, |
|
|
|
kind: ExtendedKind.NOSTR_SPECIFICATION, |
|
|
|
@ -2319,8 +2248,6 @@ export async function createPublicationContentDraftEvent( |
|
|
|
isNsfw?: boolean |
|
|
|
isNsfw?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
addExpirationTag?: boolean |
|
|
|
expirationMonths?: number |
|
|
|
expirationMonths?: number |
|
|
|
addQuietTag?: boolean |
|
|
|
|
|
|
|
quietDays?: number |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
): Promise<TDraftEvent> { |
|
|
|
const { content: transformedEmojisContent, emojiTags } = transformCustomEmojisInContent(content) |
|
|
|
const { content: transformedEmojisContent, emojiTags } = transformCustomEmojisInContent(content) |
|
|
|
@ -2356,9 +2283,6 @@ export async function createPublicationContentDraftEvent( |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
tags.push(buildExpirationTag(options.expirationMonths)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (options.addQuietTag && options.quietDays) { |
|
|
|
|
|
|
|
tags.push(buildQuietTag(options.quietDays)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return setDraftEventCache({ |
|
|
|
return setDraftEventCache({ |
|
|
|
kind: ExtendedKind.PUBLICATION_CONTENT, |
|
|
|
kind: ExtendedKind.PUBLICATION_CONTENT, |
|
|
|
|