feat(applications): preserve submitted packages

This commit is contained in:
cesnimda
2026-08-31 16:54:41 +02:00
parent 47e8e3e50e
commit 5337ba3a5e
22 changed files with 903 additions and 11 deletions
@@ -246,6 +246,35 @@ export type CoverLetter = {
aiSuggestionCount: number;
};
export type SubmittedPackageAttachment = {
id: number;
fileName: string;
fileType: string;
purpose: string | null;
fileSize: number;
sha256: string;
};
export type SubmittedPackage = {
id: number;
version: number;
cvVariantId: number | null;
cvVariantName: string | null;
cvVariantVersion: number | null;
cvThemeId: string | null;
hasCv: boolean;
hasCoverLetter: boolean;
createdAtUtc: string;
attachments: SubmittedPackageAttachment[];
};
export type SubmittedPackageDetail = {
summary: SubmittedPackage;
renderedCvHtml: string | null;
coverLetterText: string | null;
applicationMaterialJson: string;
};
export const applicationAssetsApi = {
cv: (jobId: number) => api.get<ApplicationCv>(`/jobapplications/${jobId}/cv`).then((r) => r.data),
attachVariant: (jobId: number, variantId: number | null) =>
@@ -258,6 +287,14 @@ export const applicationAssetsApi = {
api.put<CoverLetter>(`/jobapplications/${jobId}/cover-letter`, { text, source, aiAction }).then((r) => r.data),
restoreCoverLetter: (jobId: number, version: number) =>
api.post<CoverLetter>(`/jobapplications/${jobId}/cover-letter/versions/${version}/restore`).then((r) => r.data),
submittedPackages: (jobId: number) =>
api.get<SubmittedPackage[]>(`/jobapplications/${jobId}/submitted-packages`).then((r) => r.data),
captureSubmittedPackage: (jobId: number) =>
api.post<SubmittedPackage>(`/jobapplications/${jobId}/submitted-packages`).then((r) => r.data),
submittedPackage: (jobId: number, packageId: number) =>
api.get<SubmittedPackageDetail>(`/jobapplications/${jobId}/submitted-packages/${packageId}`).then((r) => r.data),
downloadSubmittedAttachment: (jobId: number, packageId: number, attachmentId: number) =>
api.get<Blob>(`/jobapplications/${jobId}/submitted-packages/${packageId}/attachments/${attachmentId}`, { responseType: "blob" }).then((r) => r.data),
saveApplicationDrafts: (jobId: number, applicationAnswerDraft: string, recruiterMessageDraft: string) =>
api.put(`/jobapplications/${jobId}/application-drafts`, { applicationAnswerDraft, recruiterMessageDraft }).then(() => undefined),
};