From 44d320c994d2feff2c56030e297909260c2c6f5c Mon Sep 17 00:00:00 2001 From: aecsocket Date: Mon, 8 Jun 2026 15:50:48 +0100 Subject: [PATCH] Bump upload timeout --- packages/api-client/src/modules/labrinth/versions/v3.ts | 6 ++++-- packages/api-client/src/platform/xhr-upload-client.ts | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/api-client/src/modules/labrinth/versions/v3.ts b/packages/api-client/src/modules/labrinth/versions/v3.ts index bd7437e9de..a80710757a 100644 --- a/packages/api-client/src/modules/labrinth/versions/v3.ts +++ b/packages/api-client/src/modules/labrinth/versions/v3.ts @@ -2,6 +2,8 @@ import { AbstractModule } from '../../../core/abstract-module' import type { UploadHandle } from '../../../types/upload' import type { Labrinth } from '../types' +const VERSION_UPLOAD_TIMEOUT_MS = 30 * 60 * 1000 + export class LabrinthVersionsV3Module extends AbstractModule { public getModuleID(): string { return 'labrinth_versions_v3' @@ -199,7 +201,7 @@ export class LabrinthVersionsV3Module extends AbstractModule { api: 'labrinth', version: 3, formData, - timeout: 60 * 5 * 1000, + timeout: VERSION_UPLOAD_TIMEOUT_MS, }) } @@ -284,7 +286,7 @@ export class LabrinthVersionsV3Module extends AbstractModule { api: 'labrinth', version: 2, formData, - timeout: 60 * 5 * 1000, + timeout: VERSION_UPLOAD_TIMEOUT_MS, }) } } diff --git a/packages/api-client/src/platform/xhr-upload-client.ts b/packages/api-client/src/platform/xhr-upload-client.ts index 40190f96d4..7d6016d5b9 100644 --- a/packages/api-client/src/platform/xhr-upload-client.ts +++ b/packages/api-client/src/platform/xhr-upload-client.ts @@ -122,6 +122,11 @@ export abstract class XHRUploadClient extends AbstractModrinthClient { xhr.addEventListener('error', () => reject(new ModrinthApiError('Upload failed'))) xhr.addEventListener('abort', () => reject(new ModrinthApiError('Upload cancelled'))) + xhr.addEventListener('timeout', () => reject(new ModrinthApiError('Upload timed out'))) + + if (context.options.timeout !== undefined) { + xhr.timeout = context.options.timeout + } // build URL with params (unlike $fetch, XHR doesn't handle params automatically) let url = context.url