fix: add error handling for fetch response in internship edit page

This commit is contained in:
2025-11-08 14:16:14 +01:00
parent 708bd79200
commit e3657986ce

View File

@@ -20,7 +20,7 @@ const client = useSanctumClient();
const loading = ref(false);
const action_error = ref(null as null | string);
const { data, refresh } = await useSanctumFetch<Internship>(`/api/internships/${route.params.id}`);
const { data, error, refresh } = await useSanctumFetch<Internship>(`/api/internships/${route.params.id}`);
async function handleUpdateOfBasicInfo(internship: NewInternship) {
action_error.value = null;
@@ -57,37 +57,42 @@ async function handleUpdateOfBasicInfo(internship: NewInternship) {
<!-- Chybová hláška -->
<ErrorAlert v-if="action_error" :error="action_error" />
<div>
<h2>Základné informácie</h2>
<ErrorAlert v-if="data?.status.status !== InternshipStatus.SUBMITTED"
error='Vaša prax nie je v stave "Zadaná" a teda nemôžete meniť údaje.' />
<InternshipEditor v-else :internship="data!" :submit="handleUpdateOfBasicInfo" />
</div>
<!-- Chybová hláška -->
<ErrorAlert v-if="error" :error="error.message" />
<hr />
<div v-else>
<div>
<h2>Základné informácie</h2>
<ErrorAlert v-if="data?.status.status !== InternshipStatus.SUBMITTED"
error='Vaša prax nie je v stave "Zadaná" a teda nemôžete meniť údaje.' />
<InternshipEditor v-else :internship="data!" :submit="handleUpdateOfBasicInfo" />
</div>
<div>
<h2>Stav</h2>
<h4>Aktuálny stav</h4>
<p>{{ prettyInternshipStatus(data?.status.status!) }}</p>
<p>Poznámka: <em>{{ data?.status.note }}</em></p>
<p>Posledná zmena: <em>{{ data?.status.changed }}, {{ data?.status.modified_by.name }}</em></p>
<hr />
<br />
<div>
<h2>Stav</h2>
<h4>Aktuálny stav</h4>
<p>{{ prettyInternshipStatus(data?.status.status!) }}</p>
<p>Poznámka: <em>{{ data?.status.note }}</em></p>
<p>Posledná zmena: <em>{{ data?.status.changed }}, {{ data?.status.modified_by.name }}</em></p>
<h4>História</h4>
<InternshipStatusHistoryView :internship="data!" />
</div>
<br />
<hr />
<h4>História</h4>
<InternshipStatusHistoryView :internship="data!" />
</div>
<div>
<h2>Nahratie dokumentov</h2>
<hr />
<ErrorAlert v-if="data?.status.status !== InternshipStatus.CONFIRMED" title="Blokované"
error='Vaša prax nie je v stave "Schválená" a teda nemôžete nahrať dokumenty.' />
<div>
<h2>Nahratie dokumentov</h2>
<InternshipDocumentEditor v-else :internship="data!" @successful-submit="refresh" />
<ErrorAlert v-if="data?.status.status !== InternshipStatus.CONFIRMED" title="Blokované"
error='Vaša prax nie je v stave "Schválená" a teda nemôžete nahrať dokumenty.' />
<InternshipDocumentEditor v-else :internship="data!" @successful-submit="refresh" />
</div>
</div>
</v-card>
</v-container>