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.
27 lines
1.0 KiB
27 lines
1.0 KiB
import { ExtendedKind } from '@/constants' |
|
import { kinds } from 'nostr-tools' |
|
|
|
/** Kinds that must have non-whitespace `content` before Publish is enabled. */ |
|
export const PUBLISH_REQUIRES_NONEMPTY_CONTENT_KINDS: ReadonlySet<number> = new Set([ |
|
kinds.ShortTextNote, // 1 — notes and kind-1 replies |
|
ExtendedKind.COMMENT, // 1111 |
|
ExtendedKind.PUBLIC_MESSAGE, // 24 |
|
kinds.LongFormArticle, // 30023 |
|
ExtendedKind.NOSTR_SPECIFICATION, // 30817 |
|
ExtendedKind.WIKI_ARTICLE, // 30818 |
|
ExtendedKind.PUBLICATION_CONTENT // 30041 |
|
]) |
|
|
|
export function publishRequiresNonemptyContent(kind: number): boolean { |
|
return PUBLISH_REQUIRES_NONEMPTY_CONTENT_KINDS.has(kind) |
|
} |
|
|
|
export function hasNonemptyPublishContent(content: string): boolean { |
|
return content.trim().length > 0 |
|
} |
|
|
|
/** Whether Publish should be enabled for this kind and composer body. */ |
|
export function canPublishWithContent(kind: number, content: string): boolean { |
|
if (!publishRequiresNonemptyContent(kind)) return true |
|
return hasNonemptyPublishContent(content) |
|
}
|
|
|