also looking at this
Queued posts carry title, link card, and image through to publish
#13
8 files
+158
-11
| @@ -4,6 +4,7 @@ import { Action } from '@stacksjs/actions' | ||
| 4 | 4 | import { response } from '@stacksjs/router' |
| 5 | 5 | import { crosspostProviders } from '../../Services/Social/CrosspostService' |
| 6 | 6 | import { postQueue } from '../../Services/Social/QueueService' |
| 7 | import { readUploadedImage } from '../../Support/Social/uploads' | |
| 7 | 8 | |
| 8 | 9 | export default new Action({ |
| 9 | 10 | name: 'Postline Queue Save', |
| @@ -22,8 +23,27 @@ export default new Action({ | ||
| 22 | 23 | const scheduledAt = String(request.get('scheduled_at') || '').trim() || null |
| 23 | 24 | const title = String(request.get('title') || '').trim() || null |
| 24 | 25 | |
| 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 | ||
| 25 | 45 | try { |
| 26 | const data = await postQueue.save({ text, providers, title, scheduledAt }) | |
| 46 | const data = await postQueue.save({ text, providers, title, scheduledAt, external, image }) | |
| 27 | 47 | return response.json({ ok: true, data }) |
| 28 | 48 | } |
| 29 | 49 | catch (error) { |