feat: initial impl of file proxy

This commit is contained in:
2025-10-21 23:45:04 +00:00
parent 6eded27121
commit 6234c5efd3
24 changed files with 420 additions and 125 deletions

View File

@@ -17,7 +17,9 @@ import {
newFileHandle,
} from "../shared/filesystem"
import * as Directories from "./directories"
import * as FilePreview from "./filepreview"
import * as Files from "./files"
import * as FileShare from "./fileshare"
export const VDirectoryHandle = v.object({
kind: v.literal(FileType.Directory),
@@ -228,3 +230,33 @@ export async function fetchFileUrl(
return url
}
export async function openFile(
ctx: AuthenticatedMutationCtx,
{ fileId }: { fileId: Id<"files"> },
) {
const file = await authorizedGet(ctx, fileId)
if (!file) {
throw Err.create(Err.Code.NotFound, "file not found")
}
const fileShare = await FilePreview.find(ctx, {
storageId: file.storageId,
})
if (fileShare && !FileShare.hasExpired(fileShare)) {
await FilePreview.extend(ctx, { doc: fileShare })
return {
file,
shareToken: fileShare.shareToken,
}
}
const newFileShare = await FilePreview.create(ctx, {
storageId: file.storageId,
})
return {
file,
shareToken: newFileShare.shareToken,
}
}