Skip to content

Commit 4cc1548

Browse files
Endrer til separate lister for accpeted og rejected filer + Slettet utkommentert kode
1 parent 3a75b9d commit 4cc1548

File tree

1 file changed

+59
-52
lines changed

1 file changed

+59
-52
lines changed

src/frontend/components/SøknadsSteg/Dokumentasjon/LastOppVedlegg2.tsx

+59-52
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { useState } from 'react';
22

33
import {
44
Checkbox,
5+
FileAccepted,
56
FileObject,
67
FileRejected,
78
FileRejectionReason,
@@ -23,6 +24,14 @@ import { Dokumentasjonsbehov } from '../../../typer/kontrakt/dokumentasjon';
2324
import { Typografi } from '../../../typer/sanity/sanity';
2425
import { slåSammen } from '../../../utils/slåSammen';
2526
import TekstBlock from '../../Felleskomponenter/Sanity/TekstBlock';
27+
import { useLastRessurserContext } from '../../../context/LastRessurserContext';
28+
import axios from 'axios';
29+
import Miljø from '../../../../shared-utils/Miljø';
30+
31+
interface OpplastetVedlegg {
32+
dokumentId: string;
33+
filnavn: string;
34+
}
2635

2736
interface Props {
2837
dokumentasjon: IDokumentasjon;
@@ -35,6 +44,7 @@ interface Props {
3544

3645
const LastOppVedlegg2: React.FC<Props> = ({ dokumentasjon, oppdaterDokumentasjon }) => {
3746
const { søknad, tekster, plainTekst } = useApp();
47+
const { wrapMedSystemetLaster } = useLastRessurserContext();
3848

3949
const dokumentasjonstekster = tekster().DOKUMENTASJON;
4050
const frittståendeOrdTekster = tekster().FELLES.frittståendeOrd;
@@ -61,19 +71,20 @@ const LastOppVedlegg2: React.FC<Props> = ({ dokumentasjon, oppdaterDokumentasjon
6171

6272
const filePdf = new File(['abc'.repeat(100000)], 'document.pdf');
6373
const fileJpg = new File(['abc'.repeat(500000)], 'picture.jpg');
64-
const exampleFiles: FileObject[] = [
74+
75+
const [acceptedFiles, setAcceptedFiles] = useState<FileAccepted[]>([
6576
{ file: filePdf, error: false },
77+
]);
78+
const [rejectedFiles, setRejectedFiles] = useState<FileRejected[]>([
6679
{ file: fileJpg, error: true, reasons: ['fileType'] },
67-
];
80+
]);
6881

69-
const [files, setFiles] = useState<FileObject[]>(exampleFiles);
70-
71-
function removeFile(fileToRemove: FileObject) {
72-
setFiles(files.filter(file => file !== fileToRemove));
82+
function removeAcceptedFile(fileToRemove: FileAccepted) {
83+
setAcceptedFiles(acceptedFiles.filter(file => file !== fileToRemove));
84+
}
85+
function removeRejectedFile(fileToRemove: FileRejected) {
86+
setRejectedFiles(rejectedFiles.filter(file => file !== fileToRemove));
7387
}
74-
75-
const acceptedFiles = files.filter(file => !file.error);
76-
const rejectedFiles = files.filter((f): f is FileRejected => f.error);
7788

7889
const MAKS_FILSTØRRELSE_MB = 10;
7990
const MAKS_FILSTØRRELSE = MAKS_FILSTØRRELSE_MB * 1024 * 1024;
@@ -84,8 +95,44 @@ const LastOppVedlegg2: React.FC<Props> = ({ dokumentasjon, oppdaterDokumentasjon
8495
fileSize: `Filen er større enn ${MAKS_FILSTØRRELSE_MB} MB`,
8596
};
8697

98+
const datoTilStreng = (date: Date): string => {
99+
return date.toISOString();
100+
};
101+
const dagensDatoStreng = datoTilStreng(new Date());
102+
87103
const addFile = async (newFiles: FileObject[]) => {
88-
setFiles([...files, ...newFiles]);
104+
const nyeVedlegg: IVedlegg[] = [];
105+
106+
await Promise.all(
107+
newFiles.map((newFile: FileObject) => {
108+
wrapMedSystemetLaster(async () => {
109+
const requestData = new FormData();
110+
requestData.append('file', newFile.file);
111+
112+
await axios
113+
.post<OpplastetVedlegg>(
114+
`${Miljø().dokumentProxyUrl}/mapper/familievedlegg`,
115+
requestData,
116+
{
117+
withCredentials: true,
118+
headers: {
119+
'content-type': 'multipart/form-data',
120+
accept: 'application/json',
121+
},
122+
}
123+
)
124+
.then((response: { data: OpplastetVedlegg }) => {
125+
const { data } = response;
126+
nyeVedlegg.push({
127+
dokumentId: data.dokumentId,
128+
navn: newFile.file.name,
129+
størrelse: newFile.file.size,
130+
tidspunkt: dagensDatoStreng,
131+
});
132+
});
133+
});
134+
})
135+
);
89136
};
90137

91138
return (
@@ -151,7 +198,7 @@ const LastOppVedlegg2: React.FC<Props> = ({ dokumentasjon, oppdaterDokumentasjon
151198
file={file.file}
152199
button={{
153200
action: 'delete',
154-
onClick: () => removeFile(file),
201+
onClick: () => removeAcceptedFile(file),
155202
}}
156203
/>
157204
))}
@@ -173,7 +220,7 @@ const LastOppVedlegg2: React.FC<Props> = ({ dokumentasjon, oppdaterDokumentasjon
173220
error={errors[rejected.reasons[0]]}
174221
button={{
175222
action: 'delete',
176-
onClick: () => removeFile(rejected),
223+
onClick: () => removeRejectedFile(rejected),
177224
}}
178225
/>
179226
))}
@@ -182,46 +229,6 @@ const LastOppVedlegg2: React.FC<Props> = ({ dokumentasjon, oppdaterDokumentasjon
182229
)}
183230
</>
184231
)}
185-
186-
{/* {!dokumentasjon.harSendtInn && (
187-
<FileUpload.Dropzone
188-
label={'Last opp filer'}
189-
accept={[EFiltyper.PNG, EFiltyper.JPG, EFiltyper.JPEG, EFiltyper.PDF].join(
190-
','
191-
)}
192-
maxSizeInBytes={MAKS_FILSTØRRELSE}
193-
fileLimit={{
194-
max: MAKS_ANTALL_FILER,
195-
current: dokumentasjon.opplastedeVedlegg.length,
196-
}}
197-
onSelect={nyeFiler => console.log(nyeFiler)}
198-
/>
199-
)}
200-
201-
{dokumentasjon.opplastedeVedlegg.length > 0 && (
202-
<VStack gap="2" marginBlock={'8 0'}>
203-
<Heading level="3" size="xsmall">
204-
{`${plainTekst(frittståendeOrdTekster.vedlegg)} (${dokumentasjon.opplastedeVedlegg.length})`}
205-
</Heading>
206-
<VStack as="ul" gap="3">
207-
{dokumentasjon.opplastedeVedlegg.map(vedlegg => (
208-
<FileUpload.Item
209-
as="li"
210-
key={vedlegg.dokumentId}
211-
file={{
212-
name: vedlegg.navn,
213-
size: vedlegg.størrelse,
214-
lastModified: new Date(vedlegg.tidspunkt).getTime(),
215-
}}
216-
button={{
217-
action: 'delete',
218-
onClick: () => console.log(vedlegg),
219-
}}
220-
/>
221-
))}
222-
</VStack>
223-
</VStack>
224-
)} */}
225232
</VStack>
226233
</FormSummary>
227234
);

0 commit comments

Comments
 (0)