2026-01-13 14:49:19 +01:00

41 lines
1.7 KiB
TypeScript

import { nostrService } from '../nostr'
import type { ArticleDraft } from '../articlePublisher'
import { writeOrchestrator } from '../writeOrchestrator'
export function ensureKeys(authorPubkey: string, authorPrivateKey?: string): void {
nostrService.setPublicKey(authorPubkey)
if (authorPrivateKey) {
nostrService.setPrivateKey(authorPrivateKey)
} else if (!nostrService.getPrivateKey()) {
throw new Error('Private key required for signing. Connect a wallet that can sign.')
}
}
export function requireCategory(category?: ArticleDraft['category']): asserts category is NonNullable<ArticleDraft['category']> {
if (category !== 'science-fiction' && category !== 'scientific-research') {
throw new Error('Vous devez sélectionner une catégorie (science-fiction ou recherche scientifique).')
}
}
export async function ensurePresentation(authorPubkey: string): Promise<string> {
const { articlePublisher } = await import('../articlePublisher')
const presentation = await articlePublisher.getAuthorPresentation(authorPubkey)
if (!presentation) {
throw new Error('Vous devez créer un article de présentation avant de publier des articles.')
}
return presentation.id
}
export function mapDraftCategoryToTag(category: NonNullable<ArticleDraft['category']>): 'sciencefiction' | 'research' {
return category === 'science-fiction' ? 'sciencefiction' : 'research'
}
export function getPrivateKeyForSigning(authorPrivateKey: string | undefined): string {
const privateKey = authorPrivateKey ?? nostrService.getPrivateKey()
if (!privateKey) {
throw new Error('Private key required for signing')
}
writeOrchestrator.setPrivateKey(privateKey)
return privateKey
}