Skip to content

Commit

Permalink
f - kategorier blir lastet opp under rett kategori, må bare få fikset…
Browse files Browse the repository at this point in the history
… at det skal bare lastes opp en plass
  • Loading branch information
joeldlin committed Dec 6, 2024
1 parent 4f02693 commit 2aa918e
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 35 deletions.
27 changes: 20 additions & 7 deletions src/KortKategorierContextProvider.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,28 @@
import React, {useContext} from "react";
import {VedleggFrontendType} from "./generated/model";

export const ValgtKategoriContext = React.createContext<{
valgtKategoriData: {valgtKategorier: VedleggFrontendType};
setValgtKategoriData: React.Dispatch<React.SetStateAction<{valgtKategorier: VedleggFrontendType}>>;
} | null>(null);
interface ValgtKategoriData {
valgtKategorier?: VedleggFrontendType;
sokersTekst?: string;
}

interface KategoriContextProviderProps {
valgtKategoriData: ValgtKategoriData;
setValgtKategoriData: (data: Partial<ValgtKategoriData>) => void;
}

const ValgtKategoriContext = React.createContext<KategoriContextProviderProps | undefined>(undefined);

export const ValgtKategoriProvider = ({children}: {children: React.ReactNode}) => {
const [valgtKategoriData, setValgtKategoriData] = React.useState<{
valgtKategorier: VedleggFrontendType;
}>({valgtKategorier: "annet|annet"});
const [valgtKategoriData, setKategoriDataState] = React.useState<ValgtKategoriData>({});

const setValgtKategoriData = (data: Partial<ValgtKategoriData>) => {
setKategoriDataState((prevData) => ({
...prevData,
...data,
valgtKategorier: data.valgtKategorier || "kort|annet", // Always ensure fallback
}));
};

return (
<ValgtKategoriContext.Provider value={{valgtKategoriData, setValgtKategoriData}}>
Expand Down
22 changes: 8 additions & 14 deletions src/lib/components/fileupload/FileUploadBox.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,11 @@ import {
import {useVedlegg} from "../../hooks/dokumentasjon/useVedlegg";
import {VedleggFrontendType} from "../../../generated/model";
import {useValgtKategoriContext} from "../../../KortKategorierContextProvider.tsx";
//import {useValgtKategoriContext} from "../../../KortKategorierContextProvider.tsx";

interface Props {
sporsmal: string;
undertekst: string;
dokumentasjonType?: VedleggFrontendType;
dokumentasjonType: VedleggFrontendType;
}

const FileUploadBox = ({sporsmal, undertekst, dokumentasjonType}: Props): React.JSX.Element => {
Expand All @@ -34,17 +33,15 @@ const FileUploadBox = ({sporsmal, undertekst, dokumentasjonType}: Props): React.
);
};

const Dokumenter = ({dokumentasjonType}: {dokumentasjonType?: VedleggFrontendType}) => {
const Dokumenter = ({dokumentasjonType}: {dokumentasjonType: VedleggFrontendType}) => {
const {t} = useTranslation();

const {valgtKategoriData} = useValgtKategoriContext();
const type =
dokumentasjonType === "kort|behov"
? "kort|behov"
: valgtKategoriData.valgtKategorier === "annet|annet"
? "kort|annet"
: (valgtKategoriData.valgtKategorier as VedleggFrontendType);

console.log("Dokumenter type", type);
// Determine final type: use context-selected value if available, fallback to prop
const finalDokumentasjonType = valgtKategoriData.valgtKategorier || dokumentasjonType || "kort|annet";

console.log("Final dokumentasjonType used in FileUploadBox:", finalDokumentasjonType);

const {
deleteDocument,
Expand All @@ -53,7 +50,7 @@ const Dokumenter = ({dokumentasjonType}: {dokumentasjonType?: VedleggFrontendTyp
error,
isPending: uploadPending,
currentUpload,
} = useVedlegg(type);
} = useVedlegg(finalDokumentasjonType);
const {conversionPending} = usePDFConverter();
const [showSuccessAlert, setShowSuccessAlert] = React.useState(false);
const isPending = conversionPending || conversionPending;
Expand Down Expand Up @@ -102,15 +99,12 @@ const DokumentUploader = ({
const [previewFile, setPreviewFile] = React.useState<File | null>(null);
const {conversionPending, conversionError, convertToPDF} = usePDFConverter();
const isPending = visSpinner || conversionPending;
const {setValgtKategoriData} = useValgtKategoriContext();

if (conversionError) throw new PdfConversionError(`conversion error: ${conversionError}`);

const handleFileSelect = async ({target: {files}}: ChangeEvent<HTMLInputElement>) => {
if (!files?.length) return;

const file = files[0];
setValgtKategoriData({valgtKategorier: "annet|annet"});
if (SUPPORTED_WITHOUT_CONVERSION.includes(file.type)) {
setPreviewFile(file);
} else {
Expand Down
11 changes: 9 additions & 2 deletions src/lib/hooks/dokumentasjon/useVedlegg.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {humanizeFilesize} from "../../../sider/08-vedlegg/lib/humanizeFilesize";
import {axiosInstance} from "../../api/axiosInstance";
import {logAmplitudeEvent} from "../../amplitude/Amplitude";
import {useContextSessionInfo} from "../../providers/useContextSessionInfo.ts";
import {useValgtKategoriContext} from "../../../KortKategorierContextProvider.tsx";

const TEN_MEGABYTE_COMPAT_FALLBACK = 10 * 1024 * 1024;

Expand All @@ -24,8 +25,6 @@ export const useVedlegg = (dokumentasjonType: VedleggFrontendType) => {
const behandlingsId = useBehandlingsId();
const {t} = useTranslation();

console.log("useVedlegg dokumentasjonType", dokumentasjonType);

const handleApiError = (reason: any) =>
setError(t(isSoknadApiError(reason) ? DigisosApiErrorMap[reason.error] : REST_FEIL.GENERELL_FEIL));

Expand All @@ -34,6 +33,8 @@ export const useVedlegg = (dokumentasjonType: VedleggFrontendType) => {
const {mutate: mutateDelete, isPending: isDeletionPending} = useDeleteDokument();

const isPending = isDokumentasjonPending || isDeletionPending || uploadPercent !== null;
console.log("useVedlegg dokumentasjonType", dokumentasjonType);
const {setValgtKategoriData} = useValgtKategoriContext();

/**
* When the data on the server has changed, we automatically update the client-side list.
Expand All @@ -59,12 +60,15 @@ export const useVedlegg = (dokumentasjonType: VedleggFrontendType) => {
* @param dokumentId The dokumentId to delete
*/
const deleteDocument = (dokumentId: string) => {
console.log("useVedlegg deleteDocument dokumentasjonType", dokumentasjonType);
mutateDelete(
{behandlingsId, dokumentId},
{
onError: handleApiError,
onSuccess: () => {
dispatch({type: "remove", dokumentId});
setValgtKategoriData({valgtKategorier: "kort|annet"});

logAmplitudeEvent("dokument slettet", {opplysningType: dokumentasjonType}).then();
},
}
Expand All @@ -77,6 +81,7 @@ export const useVedlegg = (dokumentasjonType: VedleggFrontendType) => {
* @param file The file to upload
*/
const uploadDocument = async (file: File) => {
console.log("useVedlegg uploadDocument dokumentasjonType", dokumentasjonType);
setError(null);

if (maxUploadSize != null && file.size > maxUploadSize) {
Expand All @@ -86,6 +91,7 @@ export const useVedlegg = (dokumentasjonType: VedleggFrontendType) => {
}

try {
console.log("useVedlegg try uploadDocument dokumentasjonType", dokumentasjonType);
const data = new FormData();
data.append("file", file);

Expand All @@ -102,6 +108,7 @@ export const useVedlegg = (dokumentasjonType: VedleggFrontendType) => {

setUploadPercent(null);
dispatch({type: "insert", dokument});
setValgtKategoriData({valgtKategorier: "kort|annet"});
await logAmplitudeEvent("dokument lastet opp", {opplysningType: dokumentasjonType});
} catch (e: any) {
handleApiError(e);
Expand Down
24 changes: 13 additions & 11 deletions src/sider/08-vedlegg/upload/ForhandsvisningVedleggModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,21 +35,19 @@ export const ForhandsvisningVedleggModal = ({
const {valgtKategoriData, setValgtKategoriData} = useValgtKategoriContext();
const [selectedCategory, setSelectedCategory] = useState<string>("");

console.log("ForhandsvisningVedleggModal valgtKategoriData", valgtKategoriData);
console.log("ForhandsvisningVedleggModal selectedCategory", selectedCategory);

const handleAccept = () => {
console.log("handleAccept selectedCategory", selectedCategory);
const categoryToSet = selectedCategory === "annet|annet" || !selectedCategory ? "kort|annet" : selectedCategory;
console.log("handleAccept categoryToSet", categoryToSet);
// Ensure `kort|annet` is set when no valid category is selected
const categoryToSet =
selectedCategory === "annet|annet" || selectedCategory === "" ? "kort|annet" : selectedCategory;

setValgtKategoriData({valgtKategorier: categoryToSet as VedleggFrontendType});
setSelectedCategory(""); // Reset after accept
onAccept();
setSelectedCategory(""); // Reset the selected category
};

const handleClose = () => {
setSelectedCategory("annet|annet"); // Reset the selected category
setValgtKategoriData({valgtKategorier: "annet|annet"});
setValgtKategoriData({valgtKategorier: "kort|annet"}); // Reset context
setSelectedCategory(""); // Reset local state
onClose();
};

Expand Down Expand Up @@ -91,16 +89,20 @@ export const ForhandsvisningVedleggModal = ({
</Modal.Body>
<Modal.Footer className={"!block space-y-4"}>
<BodyShort>{t("vedlegg.forhandsvisning.info")}</BodyShort>
{isKortSoknad && (
{valgtKategoriData.valgtKategorier !== "kort|behov" && isKortSoknad && (
<div>
<div>
<Select
label={"Velg en kategori for dokumentet"}
value={selectedCategory}
onChange={(event: any) => {
const newCategory = event.target.value;

// Map "annet|annet" (placeholder) to "kort|annet" when no specific category is selected
const categoryToSet = newCategory === "annet|annet" ? "kort|annet" : newCategory;

setSelectedCategory(newCategory);
setValgtKategoriData({valgtKategorier: newCategory as VedleggFrontendType});
setValgtKategoriData({valgtKategorier: categoryToSet as VedleggFrontendType});
}}
>
<option value="annet|annet">
Expand Down
2 changes: 1 addition & 1 deletion src/sider/kort/04-inntekt/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ const Inntekt = () => {
<FileUploadBox
sporsmal={t("begrunnelse.kort.behov.dokumentasjon.tittel")}
undertekst={t("situasjon.kort.dokumentasjon.description")}
dokumentasjonType={"annet|annet"}
dokumentasjonType={"kort|annet"}
/>
<SkjemaStegButtons onPrevious={async () => navigate("../3")} onNext={async () => await gotoPage(5)} />
</SkjemaStegBlock>
Expand Down

0 comments on commit 2aa918e

Please sign in to comment.