Skip to content

Commit c34b503

Browse files
committed
readds displayerrorprovider to support backwards compatibility
1 parent 35b96cd commit c34b503

File tree

3 files changed

+34
-5
lines changed

3 files changed

+34
-5
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import React, { createContext, useContext, useState } from 'react';
2+
import type { PropsWithChildren } from 'react';
3+
4+
import { DisplayError } from 'src/core/errorHandling/DisplayError';
5+
6+
const Context = createContext<(error: Error) => void>(() => {});
7+
Context.displayName = 'DisplayErrorContext';
8+
9+
export function DisplayErrorProvider({ children }: PropsWithChildren) {
10+
const [error, setError] = useState<Error | null>(null);
11+
12+
if (error != null) {
13+
return <DisplayError error={error} />;
14+
}
15+
16+
return <Context.Provider value={setError}>{children}</Context.Provider>;
17+
}
18+
19+
export const useDisplayError = () => useContext(Context);

src/features/instance/useProcessNext.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { toast } from 'react-toastify';
44
import { useMutation, useQueryClient } from '@tanstack/react-query';
55

66
import { ContextNotProvided } from 'src/core/contexts/context';
7+
import { useDisplayError } from 'src/core/errorHandling/DisplayErrorProvider';
78
import { useApplicationMetadata } from 'src/features/applicationMetadata/ApplicationMetadataProvider';
89
import { useHasPendingScans } from 'src/features/attachments/useHasPendingScans';
910
import { invalidateFormDataQueries } from 'src/features/formData/useFormDataQuery';
@@ -39,6 +40,7 @@ export function useProcessNext() {
3940
const onSubmitFormValidation = useOnFormSubmitValidation();
4041
const applicationMetadata = useApplicationMetadata();
4142
const queryClient = useQueryClient();
43+
const displayError = useDisplayError();
4244
const hasPendingScans = useHasPendingScans();
4345

4446
const mutation = useMutation({
@@ -65,7 +67,7 @@ export function useProcessNext() {
6567
} else if (
6668
error.response?.status === 500 &&
6769
error.response?.data?.['detail'] === 'Pdf generation failed' &&
68-
appUnlocksOnPDFFailure(applicationMetadata)
70+
appSupportsUnlockingOnProcessNextFailure(applicationMetadata)
6971
) {
7072
// If process next fails due to the PDF generator failing, don't show unknown error if the app unlocks data elements
7173
toast(<Lang id='process_error.submit_error_please_retry' />, { type: 'error', autoClose: false });
@@ -96,6 +98,11 @@ export function useProcessNext() {
9698
const { data: newProcess } = await refetchProcessData();
9799
const newCurrentTask = newProcess?.currentTask;
98100

101+
if (!appSupportsUnlockingOnProcessNextFailure(applicationMetadata)) {
102+
displayError(error);
103+
return;
104+
}
105+
99106
if (newCurrentTask?.elementId && newCurrentTask?.elementId !== process?.currentTask?.elementId) {
100107
await reFetchInstanceData();
101108
navigateToTask(newCurrentTask.elementId);
@@ -134,6 +141,6 @@ export function useProcessConfirm() {
134141
};
135142
}
136143

137-
function appUnlocksOnPDFFailure({ altinnNugetVersion }: ApplicationMetadata) {
144+
function appSupportsUnlockingOnProcessNextFailure({ altinnNugetVersion }: ApplicationMetadata) {
138145
return !altinnNugetVersion || isAtLeastVersion({ actualVersion: altinnNugetVersion, minimumVersion: '8.1.0.115' });
139146
}

src/index.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import { KeepAliveProvider } from 'src/core/auth/KeepAliveProvider';
2222
import { AppQueriesProvider } from 'src/core/contexts/AppQueriesProvider';
2323
import { ProcessingProvider } from 'src/core/contexts/processingContext';
2424
import { TaskStoreProvider } from 'src/core/contexts/taskStoreContext';
25+
import { DisplayErrorProvider } from 'src/core/errorHandling/DisplayErrorProvider';
2526
import { ApplicationMetadataProvider } from 'src/features/applicationMetadata/ApplicationMetadataProvider';
2627
import { ApplicationSettingsProvider } from 'src/features/applicationSettings/ApplicationSettingsProvider';
2728
import { UiConfigProvider } from 'src/features/form/layout/UiConfigContext';
@@ -106,9 +107,11 @@ function Root() {
106107
<KeepAliveProvider>
107108
<HelmetProvider>
108109
<TaskStoreProvider>
109-
<ProcessingProvider>
110-
<App />
111-
</ProcessingProvider>
110+
<DisplayErrorProvider>
111+
<ProcessingProvider>
112+
<App />
113+
</ProcessingProvider>
114+
</DisplayErrorProvider>
112115
</TaskStoreProvider>
113116
<ToastContainer
114117
position='top-center'

0 commit comments

Comments
 (0)