ReviewOS

also looking at this

stacks/postline

Queued posts carry title, link card, and image through to publish

#13
Merged glennmichael123 wants to merge feat/queue-content into main
8 files +158 -11
app/Actions/Postline/QueueSaveAction.tsmodified+21-1
Changes to app/Actions/Postline/QueueSaveAction.ts
@@ -4,6 +4,7 @@ import { Action } from '@stacksjs/actions'
44import { response } from '@stacksjs/router'
55import { crosspostProviders } from '../../Services/Social/CrosspostService'
66import { postQueue } from '../../Services/Social/QueueService'
7import { readUploadedImage } from '../../Support/Social/uploads'
78
89export default new Action({
910 name: 'Postline Queue Save',
@@ -22,8 +23,27 @@ export default new Action({
2223 const scheduledAt = String(request.get('scheduled_at') || '').trim() || null
2324 const title = String(request.get('title') || '').trim() || null
2425
26 const externalUri = String(request.get('external_uri') || '').trim()
27 const externalTitle = String(request.get('external_title') || '').trim()
28 const external = externalUri && externalTitle
29 ? {
30 uri: externalUri,
31 title: externalTitle,
32 description: String(request.get('external_description') || '').trim() || undefined,
33 }
34 : null
35
36 const imageAlt = String(request.get('image_alt') || '').trim() || undefined
37 const uploadedImage = await readUploadedImage(request.file?.('image'))
38 const imageUrl = String(request.get('image_url') || '').trim()
39 const image = uploadedImage
40 ? { ...uploadedImage, altText: imageAlt }
41 : imageUrl
42 ? { url: imageUrl, altText: imageAlt }
43 : null
44
2545 try {
26 const data = await postQueue.save({ text, providers, title, scheduledAt })
46 const data = await postQueue.save({ text, providers, title, scheduledAt, external, image })
2747 return response.json({ ok: true, data })
2848 }
2949 catch (error) {