immich/web/src/lib/managers/upload-manager.svelte.ts
2026-03-19 13:05:11 -04:00

35 lines
911 B
TypeScript

import { eventManager } from '$lib/managers/event-manager.svelte';
import { uploadAssetsStore } from '$lib/stores/upload';
import { cancelUploadRequests } from '$lib/utils';
import { getSupportedMediaTypes, type ServerMediaTypesResponseDto } from '@immich/sdk';
class UploadManager {
mediaTypes = $state<ServerMediaTypesResponseDto>({ image: [], sidecar: [], video: [] });
constructor() {
eventManager.on({
AppInit: () => this.#loadExtensions(),
AuthLogout: () => this.reset(),
});
}
reset() {
cancelUploadRequests();
uploadAssetsStore.reset();
}
async #loadExtensions() {
try {
this.mediaTypes = await getSupportedMediaTypes();
} catch {
console.error('Failed to load supported media types');
}
}
getExtensions() {
return [...this.mediaTypes.image, ...this.mediaTypes.video];
}
}
export const uploadManager = new UploadManager();