Skip to content

Commit

Permalink
Merge pull request #343 from navikt/feature/blokker-sletting-nar-loading
Browse files Browse the repository at this point in the history
Feature/blokker sletting nar loading
  • Loading branch information
nils-arne authored Sep 23, 2024
2 parents 57d15df + ec9b294 commit 99869d5
Show file tree
Hide file tree
Showing 9 changed files with 113 additions and 56 deletions.
3 changes: 2 additions & 1 deletion assets/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@
"fullforRedigering": "Complete and confirm the document description",
"manglerFil": "Upload or delete document: {{label}}",
"manglerNavn": "Describe the document",
"navnForLangt": "The document description is too long. Max {{maxLength}} characters."
"navnForLangt": "The document description is too long. Max {{maxLength}} characters.",
"lasterOppFil" : "Wait until file upload is completed"
}
},
"radio": {
Expand Down
3 changes: 2 additions & 1 deletion assets/locales/nb/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@
"fullforRedigering": "Fullfør og bekreft redigering av beskrivelse av dokumentasjonen",
"manglerFil": "Last opp eller slett dokumentasjonen: {{label}}",
"manglerNavn": "Gi en beskrivelse av dokumentasjonen",
"navnForLangt": "Beskrivelsen er for lang. Maks {{maxLength}} tegn"
"navnForLangt": "Beskrivelsen er for lang. Maks {{maxLength}} tegn",
"lasterOppFil" : "Vent til fil er blitt lastet opp"
}
},
"radio": {
Expand Down
3 changes: 2 additions & 1 deletion assets/locales/nn/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@
"fullforRedigering": "Fullfør og bekreft redigering av namngiving av dokumentasjon",
"manglerFil": "Last opp eller slett dokumentasjon: {{label}}",
"manglerNavn": "Gje eit namn til dokumentasjonen",
"navnForLangt": "Namnet på dokumentasjonen er for langt. Maks {{maxLength}} tegn"
"navnForLangt": "Namnet på dokumentasjonen er for langt. Maks {{maxLength}} tegn",
"lasterOppFil" : "Vent til fil er lasta opp"
}
},
"radio": {
Expand Down
4 changes: 4 additions & 0 deletions components/Fil.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ export interface FilProps {
lokalFil?: File;
opplastetFil?: OpplastetFil;
filListeDispatch: React.Dispatch<ActionType>;
lasterOppStateDispatch: React.Dispatch<number>;
}

export interface FilData {
Expand Down Expand Up @@ -251,6 +252,7 @@ export function Fil({
innsendingsId,
vedlegg,
filListeDispatch,
lasterOppStateDispatch,
}: FilProps) {
const [filState, dispatch] = useReducer(filReducer, initialState);
const { status } = filState;
Expand Down Expand Up @@ -354,6 +356,7 @@ export function Fil({
type: FIL_ACTIONS.SETT_STATUS,
filState: { status: FIL_STATUS.LASTER_OPP },
});
lasterOppStateDispatch(1);

axios
.post(`${API_URL}/frontend/v1/soknad/${innsendingsId}/vedlegg/${vedlegg.id}/fil`, formData, config)
Expand Down Expand Up @@ -412,6 +415,7 @@ export function Fil({
progress: 0,
},
});
lasterOppStateDispatch(-1);
});
}, [
filState,
Expand Down
14 changes: 13 additions & 1 deletion components/Vedlegg.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,10 @@ const filListeReducer = (filListe: FilData[], action: ActionType) => {
}
};

const lasterOppStateReducer = (currentValue: number, change: number) => {
return currentValue + change;
};

const initialState: FilData[] = [];

export const VedleggContainer = styled.section<{
Expand Down Expand Up @@ -150,6 +154,8 @@ function Vedlegg(props: VedleggProps) {
const { t } = useTranslation();

const [filListe, dispatch] = useReducer(filListeReducer, initialState);
const [lasterOppState, dispatchLasterOppState] = useReducer(lasterOppStateReducer, 0);

const [hasFetched, setHasFetched] = useState(false);
const [endrer, setEndrer] = useState(false);
const [tittel, setTittel] = useState(vedlegg.label);
Expand Down Expand Up @@ -360,7 +366,12 @@ function Vedlegg(props: VedleggProps) {
{t('soknad.vedlegg.annet.rediger')}
</Button>

<Button onClick={() => slettAnnetVedlegg(vedlegg.id)} variant="secondary">
<Button
onClick={() => {
slettAnnetVedlegg(lasterOppState != 0, vedlegg.id);
}}
variant="secondary"
>
{t('soknad.vedlegg.annet.slett')}
</Button>
</>
Expand All @@ -384,6 +395,7 @@ function Vedlegg(props: VedleggProps) {
lokalFil={fil.lokalFil}
opplastetFil={fil.opplastetFil}
filListeDispatch={dispatch}
lasterOppStateDispatch={dispatchLasterOppState}
/>
);
})}
Expand Down
14 changes: 9 additions & 5 deletions components/VedleggsListe.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import styled from 'styled-components';
import useSWR from 'swr';
import Kvittering from '../components/Kvittering';
import SkjemaNedlasting from '../components/SkjemaNedlasting';
import { ExtendedVedleggType } from '../components/Vedlegg';
import { useErrorMessage } from '../hooks/useErrorMessage';
import { FyllutForm } from '../types/fyllutForm';
import { KvitteringsDto, OpplastingsStatus, SoknadType, VedleggType } from '../types/types';
Expand All @@ -16,6 +15,7 @@ import { useLagringsProsessContext } from './LagringsProsessProvider';
import LastOppVedlegg from './LastOppVedlegg';
import SkjemaOpplasting from './SkjemaOpplasting';
import { SoknadModalProvider } from './SoknadModalProvider';
import { ExtendedVedleggType } from './Vedlegg';

const { publicRuntimeConfig } = getConfig();

Expand Down Expand Up @@ -63,7 +63,7 @@ interface VedleggslisteContextType {
slettSoknad: () => void;
oppdaterLokalOpplastingStatus: (id: number, opplastingsStatus: OpplastingsStatus) => void;
leggTilVedlegg: (vedlegg: ExtendedVedleggType) => void;
slettAnnetVedlegg: (vedleggId: number) => void;
slettAnnetVedlegg: (harAktiveEndringer: boolean, vedleggId: number) => Promise<void>;
fyllutForm?: FyllutForm;
fyllutIsLoading: boolean;
}
Expand Down Expand Up @@ -204,9 +204,13 @@ function VedleggsListe({ soknad, setSoknad }: VedleggsListeProps) {
const leggTilVedlegg = (vedlegg: ExtendedVedleggType) => {
setVedleggsListe((forrigeVedleggsliste) => [...forrigeVedleggsliste, vedlegg]);
};
const slettAnnetVedlegg = (vedleggsId: number) => {
axios
.delete(`${publicRuntimeConfig.apiUrl}/frontend/v1/soknad/${soknad.innsendingsId}/vedlegg/${vedleggsId}`)

const slettAnnetVedlegg = async (harAktiveEndringer: boolean, vedleggsId: number) => {
if (harAktiveEndringer) return;

await nyLagringsProsess(
axios.delete(`${publicRuntimeConfig.apiUrl}/frontend/v1/soknad/${soknad.innsendingsId}/vedlegg/${vedleggsId}`),
)
.then(() => {
setVedleggsListe((forrigeVedleggsliste) => forrigeVedleggsliste.filter((el) => el.id !== vedleggsId));
})
Expand Down
10 changes: 10 additions & 0 deletions cypress/e2e/validering.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,16 @@ describe('Tester validering', () => {
cy.get('li').should('have.length', 1);
});

// Laster opp fil og forsøker å slette mens
cy.get('[data-cy="VedleggContainer"]')
.eq(3)
.within(() => {
cy.get('[data-cy="filvelgerKnapp"]').click();
cy.get('[data-cy="filvelgerKnapp"]').selectFile('cypress/fixtures/MarcusAurelius.jpeg');
cy.contains(translations.soknad.vedlegg.annet.slett).click();
cy.get('[data-cy="fileUploadSuccessIkon"]').should('be.visible');
});

cy.get('[data-cy="VedleggContainer"]')
.eq(3)
.within(() => {
Expand Down
2 changes: 1 addition & 1 deletion next-env.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
/// <reference types="next/image-types/global" />

// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.
// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information.
Loading

0 comments on commit 99869d5

Please sign in to comment.