diff --git a/src/components/pages/upload/uploadFiles.tsx b/src/components/pages/upload/uploadFiles.tsx index 3cf5a1ce2..6466b1a06 100755 --- a/src/components/pages/upload/uploadFiles.tsx +++ b/src/components/pages/upload/uploadFiles.tsx @@ -144,7 +144,7 @@ export function uploadFiles( setLoading(false); setProgress(0); - if ((res as ErrorBody).code) { + if ((res as ErrorBody).statusCode) { notifications.update({ id: 'upload', title: 'Error uploading files', diff --git a/src/components/pages/upload/uploadPartialFiles.tsx b/src/components/pages/upload/uploadPartialFiles.tsx index a85c9db9b..78184f669 100755 --- a/src/components/pages/upload/uploadPartialFiles.tsx +++ b/src/components/pages/upload/uploadPartialFiles.tsx @@ -139,7 +139,9 @@ export async function uploadPartialFiles( () => { const res: Response['/api/upload'] = JSON.parse(req.responseText); - if ((res as ErrorBody).code) { + console.log(res); + + if ((res as ErrorBody).message) { notifications.update({ id: 'upload-partial', title: 'Error uploading files', @@ -150,6 +152,9 @@ export async function uploadPartialFiles( loading: false, }); ready = false; + setFiles([]); + setProgress(0); + setLoading(false); return; } diff --git a/src/lib/api/partialUpload.ts b/src/lib/api/upload/partialUpload.ts similarity index 83% rename from src/lib/api/partialUpload.ts rename to src/lib/api/upload/partialUpload.ts index 023220bf8..7eea4ae6e 100755 --- a/src/lib/api/partialUpload.ts +++ b/src/lib/api/upload/partialUpload.ts @@ -3,13 +3,13 @@ import { FastifyRequest } from 'fastify'; import { writeFile } from 'fs/promises'; import { extname, join } from 'path'; import { Worker } from 'worker_threads'; -import { config } from '../config'; -import { hashPassword } from '../crypto'; -import { prisma } from '../db'; -import { log } from '../logger'; -import { guess } from '../mimes'; -import { formatFileName } from '../uploader/formatFileName'; -import { UploadHeaders, UploadOptions } from '../uploader/parseHeaders'; +import { config } from '../../config'; +import { hashPassword } from '../../crypto'; +import { prisma } from '../../db'; +import { log } from '../../logger'; +import { guess } from '../../mimes'; +import { formatFileName } from '../../uploader/formatFileName'; +import { UploadHeaders, UploadOptions } from '../../uploader/parseHeaders'; const logger = log('api').c('upload'); export async function handlePartialUpload({ @@ -34,9 +34,11 @@ export async function handlePartialUpload({ const extension = options.overrides?.extension ?? extname(options.partial.filename); if (config.files.disabledExtensions.includes(extension)) throw `File extension ${extension} is not allowed`; - let fileName = formatFileName(options.format || config.files.defaultFormat, options.partial.filename); - if (options.overrides?.filename) { - fileName = options.overrides!.filename!; + const format = options.format || config.files.defaultFormat; + let fileName = formatFileName(format, options.partial.filename); + + if (options.overrides?.filename || format === 'name') { + if (options.overrides?.filename) fileName = options.overrides!.filename!; const existing = await prisma.file.findFirst({ where: { name: { diff --git a/src/lib/api/upload.ts b/src/lib/api/upload/upload.ts similarity index 80% rename from src/lib/api/upload.ts rename to src/lib/api/upload/upload.ts index 0766d0727..9e3bc3ab9 100755 --- a/src/lib/api/upload.ts +++ b/src/lib/api/upload/upload.ts @@ -1,19 +1,19 @@ import { ApiUploadResponse, MultipartFileBuffer } from '@/server/routes/api/upload'; import { FastifyRequest } from 'fastify'; import { extname } from 'path'; -import { bytes } from '../bytes'; -import { compress } from '../compress'; -import { config } from '../config'; -import { hashPassword } from '../crypto'; -import { datasource } from '../datasource'; -import { prisma } from '../db'; -import { fileSelect } from '../db/models/file'; -import { onUpload } from '../discord'; -import { removeGps } from '../gps'; -import { log } from '../logger'; -import { guess } from '../mimes'; -import { formatFileName } from '../uploader/formatFileName'; -import { UploadHeaders, UploadOptions } from '../uploader/parseHeaders'; +import { bytes } from '../../bytes'; +import { compress } from '../../compress'; +import { config } from '../../config'; +import { hashPassword } from '../../crypto'; +import { datasource } from '../../datasource'; +import { prisma } from '../../db'; +import { fileSelect } from '../../db/models/file'; +import { onUpload } from '../../discord'; +import { removeGps } from '../../gps'; +import { log } from '../../logger'; +import { guess } from '../../mimes'; +import { formatFileName } from '../../uploader/formatFileName'; +import { UploadHeaders, UploadOptions } from '../../uploader/parseHeaders'; const logger = log('api').c('upload'); @@ -38,10 +38,11 @@ export async function handleFile({ if (file.file.bytesRead > config.files.maxFileSize) throw `File size is too large. Maximum file size is ${config.files.maxFileSize} bytes`; - let fileName = formatFileName(options.format || config.files.defaultFormat, file.filename); + const format = options.format || config.files.defaultFormat; + let fileName = formatFileName(format, file.filename); - if (options.overrides?.filename) { - fileName = options.overrides!.filename!; + if (options.overrides?.filename || format === 'name') { + if (options.overrides?.filename) fileName = options.overrides!.filename!; const existing = await prisma.file.findFirst({ where: { name: { diff --git a/src/lib/fetchApi.ts b/src/lib/fetchApi.ts index e47e2bcb2..cf4f356da 100755 --- a/src/lib/fetchApi.ts +++ b/src/lib/fetchApi.ts @@ -29,7 +29,7 @@ export async function fetchApi( } else { error = { message: await res.text(), - code: res.status, + statusCode: res.status, } as ErrorBody; } } diff --git a/src/lib/response.ts b/src/lib/response.ts index d5a540e09..1aa36fb70 100755 --- a/src/lib/response.ts +++ b/src/lib/response.ts @@ -24,7 +24,8 @@ export interface NextApiReq extends Next export type ErrorBody = { message?: string; data?: any; - code?: any; + statusCode?: number; + error?: string; [key: string]: any; }; diff --git a/src/lib/warningModal.tsx b/src/lib/warningModal.tsx index de0278c93..9a95f409b 100755 --- a/src/lib/warningModal.tsx +++ b/src/lib/warningModal.tsx @@ -21,6 +21,7 @@ export function openWarningModal(options: WarningModalOptions) { onCancel: () => modals.closeAll(), onConfirm: options.onConfirm, zIndex: 10320948239487, + size: 'auto', }); } diff --git a/src/server/routes/api/upload.ts b/src/server/routes/api/upload.ts index fae837d80..54e1b939a 100755 --- a/src/server/routes/api/upload.ts +++ b/src/server/routes/api/upload.ts @@ -1,5 +1,5 @@ -import { handlePartialUpload } from '@/lib/api/partialUpload'; -import { handleFile } from '@/lib/api/upload'; +import { handlePartialUpload } from '@/lib/api/upload/partialUpload'; +import { handleFile } from '@/lib/api/upload/upload'; import { bytes } from '@/lib/bytes'; import { config } from '@/lib/config'; import { prisma } from '@/lib/db';