비디오의 경우 원하는 장면으로 썸네일을 변경할 수 있도록 개선

This commit is contained in:
static
2025-07-12 02:53:30 +09:00
parent eac81abe5a
commit fa7ba451c3
3 changed files with 74 additions and 22 deletions

View File

@@ -1,9 +1,37 @@
import { callPostApi } from "$lib/hooks";
import type { CategoryFileAddRequest } from "$lib/server/schemas";
import { encryptData } from "$lib/modules/crypto";
import { storeFileThumbnailCache } from "$lib/modules/file";
import type { CategoryFileAddRequest, FileThumbnailUploadRequest } from "$lib/server/schemas";
export { requestCategoryCreation, requestFileRemovalFromCategory } from "$lib/services/category";
export { requestFileDownload } from "$lib/services/file";
export const requestThumbnailUpload = async (
fileId: number,
thumbnail: Blob,
dataKey: CryptoKey,
dataKeyVersion: Date,
) => {
const thumbnailBuffer = await thumbnail.arrayBuffer();
const thumbnailEncrypted = await encryptData(thumbnailBuffer, dataKey);
const form = new FormData();
form.set(
"metadata",
JSON.stringify({
dekVersion: dataKeyVersion.toISOString(),
contentIv: thumbnailEncrypted.iv,
} satisfies FileThumbnailUploadRequest),
);
form.set("content", new Blob([thumbnailEncrypted.ciphertext]));
const res = await fetch(`/api/file/${fileId}/thumbnail/upload`, { method: "POST", body: form });
if (!res.ok) return false;
storeFileThumbnailCache(fileId, thumbnailBuffer); // Intended
return true;
};
export const requestFileAdditionToCategory = async (fileId: number, categoryId: number) => {
const res = await callPostApi<CategoryFileAddRequest>(`/api/category/${categoryId}/file/add`, {
file: fileId,