fix: auto-publish approved blog submissions on approval
Approved user submissions now import into the blog automatically, with a backfill script for existing approvals and a WebSocket polyfill so backend Nostr relay queries work on Node 20. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { Router, Request, Response } from 'express';
|
||||
import { prisma } from '../db/prisma';
|
||||
import { requireAuth, requires } from '../middleware/auth';
|
||||
import { importPostFromNostr, resolveSubmissionImport } from '../services/postImport';
|
||||
|
||||
const router = Router();
|
||||
|
||||
@@ -94,6 +95,22 @@ router.patch(
|
||||
return;
|
||||
}
|
||||
|
||||
// Approval publishes the referenced Nostr article to the blog. Do this
|
||||
// before flipping the status so a failed import doesn't leave a submission
|
||||
// marked APPROVED without a corresponding live post.
|
||||
let post = null;
|
||||
if (status === 'APPROVED') {
|
||||
const importInput = await resolveSubmissionImport(submission);
|
||||
if (!importInput) {
|
||||
res.status(422).json({
|
||||
error:
|
||||
'Could not resolve the submitted Nostr event from relays. The post was not published, so the submission was left unchanged.',
|
||||
});
|
||||
return;
|
||||
}
|
||||
post = await importPostFromNostr(importInput);
|
||||
}
|
||||
|
||||
const updated = await prisma.submission.update({
|
||||
where: { id: req.params.id as string },
|
||||
data: {
|
||||
@@ -103,7 +120,7 @@ router.patch(
|
||||
},
|
||||
});
|
||||
|
||||
res.json(updated);
|
||||
res.json({ submission: updated, post });
|
||||
} catch (err) {
|
||||
console.error('Review submission error:', err);
|
||||
res.status(500).json({ error: 'Internal server error' });
|
||||
|
||||
Reference in New Issue
Block a user