imeta: don't get attachment ID from a tag
This commit is contained in:
parent
b1b341d3b8
commit
c8b999a1f7
|
@ -1,5 +1,5 @@
|
|||
import { Conf } from '@/config.ts';
|
||||
import { insertUnattachedMedia } from '@/db/unattached-media.ts';
|
||||
import { insertUnattachedMedia, UnattachedMedia } from '@/db/unattached-media.ts';
|
||||
import { configUploader as uploader } from '@/uploaders/config.ts';
|
||||
|
||||
interface FileMeta {
|
||||
|
@ -8,7 +8,7 @@ interface FileMeta {
|
|||
}
|
||||
|
||||
/** Upload a file, track it in the database, and return the resulting media object. */
|
||||
async function uploadFile(file: File, meta: FileMeta, signal?: AbortSignal): Promise<string[][]> {
|
||||
async function uploadFile(file: File, meta: FileMeta, signal?: AbortSignal): Promise<UnattachedMedia> {
|
||||
const { type, size } = file;
|
||||
const { pubkey, description } = meta;
|
||||
|
||||
|
@ -36,18 +36,13 @@ async function uploadFile(file: File, meta: FileMeta, signal?: AbortSignal): Pro
|
|||
data.push(['alt', description]);
|
||||
}
|
||||
|
||||
const uuid = crypto.randomUUID();
|
||||
data.push(['uuid', uuid]);
|
||||
|
||||
await insertUnattachedMedia({
|
||||
id: uuid,
|
||||
return insertUnattachedMedia({
|
||||
id: crypto.randomUUID(),
|
||||
pubkey,
|
||||
url,
|
||||
data,
|
||||
uploaded_at: Date.now(),
|
||||
});
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
export { uploadFile };
|
||||
|
|
|
@ -1,21 +1,17 @@
|
|||
import * as TypeFest from 'type-fest';
|
||||
/** Render Mastodon media attachment. */
|
||||
function renderAttachment(media: { id?: string; data: string[][] }) {
|
||||
const { id, data: tags } = media;
|
||||
|
||||
import { UnattachedMedia } from '@/db/unattached-media.ts';
|
||||
|
||||
type DittoAttachment = TypeFest.SetOptional<UnattachedMedia, 'id' | 'pubkey' | 'uploaded_at'>;
|
||||
|
||||
function renderAttachment(tags: string[][]) {
|
||||
const m = tags.find(([name]) => name === 'm')?.[1];
|
||||
const url = tags.find(([name]) => name === 'url')?.[1];
|
||||
const alt = tags.find(([name]) => name === 'alt')?.[1];
|
||||
const cid = tags.find(([name]) => name === 'cid')?.[1];
|
||||
const uuid = tags.find(([name]) => name === 'uuid')?.[1];
|
||||
const blurhash = tags.find(([name]) => name === 'blurhash')?.[1];
|
||||
|
||||
if (!url) return;
|
||||
|
||||
return {
|
||||
id: uuid ?? url,
|
||||
id: id ?? url,
|
||||
type: getAttachmentType(m ?? ''),
|
||||
url,
|
||||
preview_url: url,
|
||||
|
@ -40,4 +36,4 @@ function getAttachmentType(mime: string): string {
|
|||
}
|
||||
}
|
||||
|
||||
export { type DittoAttachment, renderAttachment };
|
||||
export { renderAttachment };
|
||||
|
|
|
@ -106,7 +106,7 @@ async function renderStatus(event: DittoEvent, opts: RenderStatusOpts): Promise<
|
|||
pinned: Boolean(pinEvent),
|
||||
reblog: null,
|
||||
application: null,
|
||||
media_attachments: media.map(renderAttachment).filter(Boolean),
|
||||
media_attachments: media.map((m) => renderAttachment({ data: m })).filter(Boolean),
|
||||
mentions,
|
||||
tags: [],
|
||||
emojis: renderEmojis(event),
|
||||
|
|
Loading…
Reference in New Issue