feat(web): inline previews in chat and per-upload download limit choice

This commit is contained in:
justme committed 2026-10-17 13:44:16 +08:00
1 parent 1a4069576b
commit 96f92c2ba9
6 files changed
+245 -33

No files matched your search

+3 -4
View File
@@ -87,7 +87,8 @@ async function runJob(job: Job): Promise<void> {
const prepared = await prepareObject(resource, session, threadId, 'files');
const plan = session.encryptFile(file, {}, {
itemId: prepared.itemIdBytes,
...(options.directPreview ? { gated: 'auto' as const } : { gated: true, maxDownloads: options.maxDownloads }),
// 小文件(一帧放得下)且不限制次数:不设上限,加入者直接预览。其余都带上每个文件的下载次数(0 = 不限)
...(options.directPreview && file.size < maxFrameData - 1024 ? { gated: 'auto' as const } : { gated: true, maxDownloads: options.maxDownloads }),
ts, maxFrameData, threadId, folderId,
});
item = {
@@ -95,9 +96,7 @@ async function runJob(job: Job): Promise<void> {
...(author ? { author } : {}),
...(threadId ? { threadId } : {}), ...(folderId ? { folderId } : {}), ...(localId ? { localId } : {}),
name: file.name, mime: file.type || 'application/octet-stream', size: file.size,
remaining: plan.gated
? (options.directPreview ? resource.maxDownloads ?? 0 : options.maxDownloads) || null
: null,
remaining: plan.gated ? options.maxDownloads || null : null,
preview: previewKindOf(file.type, file.name), gated: plan.gated,
};
job.itemId = item.id;