diff --git a/frontend/src/lib/components/dashboard/CoverLetterUploadCard.svelte b/frontend/src/lib/components/dashboard/CoverLetterUploadCard.svelte index 005ca7d..c616515 100644 --- a/frontend/src/lib/components/dashboard/CoverLetterUploadCard.svelte +++ b/frontend/src/lib/components/dashboard/CoverLetterUploadCard.svelte @@ -2,11 +2,19 @@ import { fetchSubmProgress } from '$lib/stores/portfolio'; import { apiDeleteCoverLetter, apiUploadCoverLetter } from '$lib/@api/candidate'; import DashboardUploadCard from './DashboardUploadCard.svelte'; + import type { ApiError } from '$lib/@api'; + + let error: string | null = null; const onFileDrop = async (detail: any) => { const file = detail.file; const callback = detail.callback; - await apiUploadCoverLetter(file, callback); + try { + await apiUploadCoverLetter(file, callback); + error = null; + } catch (e) { + error = (e as ApiError).msg; + } await fetchSubmProgress(); }; @@ -17,6 +25,7 @@ onFileDrop(e.detail)} on:delete={onDelete} title="Motivační dopis" diff --git a/frontend/src/lib/components/dashboard/DashboardUploadCard.svelte b/frontend/src/lib/components/dashboard/DashboardUploadCard.svelte index bfa5dbe..9f0c3aa 100644 --- a/frontend/src/lib/components/dashboard/DashboardUploadCard.svelte +++ b/frontend/src/lib/components/dashboard/DashboardUploadCard.svelte @@ -13,6 +13,8 @@ const dispatch = createEventDispatcher(); + export let error: string | null = null; + export let title: string; export let filetype: 'PDF' | 'ZIP'; export let filesize: number; @@ -112,7 +114,7 @@ - {#if fileDropped} + {#if fileDropped && error === null}
- Sem přetáhněte, - nebo nahrajte {placeholder} + {#if error} + {error} + {:else} + Sem přetáhněte, + nebo nahrajte {placeholder} + {/if}
{/if} diff --git a/frontend/src/lib/components/dashboard/PortfolioLetterUploadCard.svelte b/frontend/src/lib/components/dashboard/PortfolioLetterUploadCard.svelte index b9c4b71..cd93de1 100644 --- a/frontend/src/lib/components/dashboard/PortfolioLetterUploadCard.svelte +++ b/frontend/src/lib/components/dashboard/PortfolioLetterUploadCard.svelte @@ -1,12 +1,20 @@ onFileDrop(e.detail)} on:delete={onDelete} title="Portfolio" diff --git a/frontend/src/lib/components/dashboard/PortfolioZipUploadCard.svelte b/frontend/src/lib/components/dashboard/PortfolioZipUploadCard.svelte index 30c826f..41b413d 100644 --- a/frontend/src/lib/components/dashboard/PortfolioZipUploadCard.svelte +++ b/frontend/src/lib/components/dashboard/PortfolioZipUploadCard.svelte @@ -2,11 +2,19 @@ import { fetchSubmProgress } from '$lib/stores/portfolio'; import { apiDeletePortfolioZip, apiUploadPortfolioZip } from '$lib/@api/candidate'; import DashboardUploadCard from './DashboardUploadCard.svelte'; + import type { ApiError } from '$lib/@api'; + + let error: string | null = null; const onFileDrop = async (detail: any) => { const file = detail.file; const callback = detail.callback; - await apiUploadPortfolioZip(file, callback); + try { + await apiUploadPortfolioZip(file, callback); + error = null; + } catch (e) { + error = (e as ApiError).msg; + } await fetchSubmProgress(); }; @@ -17,6 +25,7 @@ onFileDrop(e.detail)} on:delete={onDelete} title="Další data"