Skip to content

Commit 6fee040

Browse files
committed
fix(dref-translation): add enforce selected langauge in useLazyRequest
1 parent 19422c3 commit 6fee040

File tree

17 files changed

+45
-6
lines changed

17 files changed

+45
-6
lines changed

app/src/components/domain/GoMultiFileInput/index.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ type Props<T extends NameType> = Omit<RawFileInputProps<T>, 'multiple' | 'value'
6262
withoutPreview?: boolean;
6363
error?: React.ReactNode;
6464
description?: React.ReactNode;
65+
useCurrentLanguageForMutation?: boolean;
6566
}
6667

6768
function GoMultiFileInput<T extends NameType>(props: Props<T>) {
@@ -85,6 +86,7 @@ function GoMultiFileInput<T extends NameType>(props: Props<T>) {
8586
withoutPreview,
8687
error,
8788
description,
89+
useCurrentLanguageForMutation = false,
8890
} = props;
8991

9092
const strings = useTranslation(i18n);
@@ -97,7 +99,7 @@ function GoMultiFileInput<T extends NameType>(props: Props<T>) {
9799
formData: true,
98100
url,
99101
method: 'POST',
100-
useCurrentLanguageForMutation: true,
102+
useCurrentLanguageForMutation,
101103
body: (body: { files: File[] }) => {
102104
const formData = new FormData();
103105

app/src/components/domain/GoSingleFileInput/index.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ type Props<T extends NameType> = Omit<RawFileInputProps<T>, 'multiple' | 'value'
4545
description?: React.ReactNode;
4646
onSuccess?: () => void;
4747
withoutStatus?: boolean;
48+
useCurrentLanguageForMutation?: boolean;
4849
}
4950

5051
function GoSingleFileInput<T extends NameType>(props: Props<T>) {
@@ -72,6 +73,7 @@ function GoSingleFileInput<T extends NameType>(props: Props<T>) {
7273
requestBody,
7374
onSuccess,
7475
withoutStatus,
76+
useCurrentLanguageForMutation = false,
7577
} = props;
7678

7779
const strings = useTranslation(i18n);
@@ -88,7 +90,7 @@ function GoSingleFileInput<T extends NameType>(props: Props<T>) {
8890
// FIXME: fix typing in server (low priority)
8991
// the server generated type for response and body is the same
9092
body: (body) => body as never,
91-
useCurrentLanguageForMutation: true,
93+
useCurrentLanguageForMutation,
9294
onSuccess: (response) => {
9395
const { id, file } = response;
9496
onChange(id, name);

app/src/components/domain/ImageWithCaptionInput/index.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ interface Props<N> {
3939
icons?: React.ReactNode;
4040
actions?: React.ReactNode;
4141
disabled?: boolean;
42+
useCurrentLanguageForMutation?: boolean;
4243
}
4344

4445
// FIXME: Move this to components
@@ -57,6 +58,7 @@ function ImageWithCaptionInput<const N extends string | number>(props: Props<N>)
5758
icons,
5859
actions,
5960
disabled,
61+
useCurrentLanguageForMutation,
6062
} = props;
6163

6264
const strings = useTranslation(i18n);
@@ -111,6 +113,7 @@ function ImageWithCaptionInput<const N extends string | number>(props: Props<N>)
111113
/>
112114
) : undefined}
113115
clearable
116+
useCurrentLanguageForMutation={useCurrentLanguageForMutation}
114117
>
115118
{label}
116119
</GoSingleFileInput>

app/src/components/domain/MultiImageWithCaptionInput/index.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ interface Props<N> {
4747
actions?: React.ReactNode;
4848
readOnly?: boolean;
4949
disabled?: boolean;
50+
useCurrentLanguageForMutation?: boolean;
5051
}
5152

5253
// FIXME: Move this to components
@@ -65,6 +66,7 @@ function MultiImageWithCaptionInput<const N extends string | number>(props: Prop
6566
actions,
6667
readOnly,
6768
disabled,
69+
useCurrentLanguageForMutation = false,
6870
} = props;
6971

7072
const strings = useTranslation(i18n);
@@ -143,6 +145,7 @@ function MultiImageWithCaptionInput<const N extends string | number>(props: Prop
143145
withoutPreview
144146
readOnly={readOnly}
145147
disabled={disabled}
148+
useCurrentLanguageForMutation={useCurrentLanguageForMutation}
146149
>
147150
{label}
148151
</GoMultiFileInput>

app/src/utils/restRequest/go.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ export interface AdditionalOptions {
4444
formData?: boolean;
4545
isCsvRequest?: boolean;
4646
enforceEnglishForQuery?: boolean;
47+
// FIXME using the current language should be default behaviour so we might not need this.
4748
useCurrentLanguageForMutation?: boolean;
49+
enforceLanguageForMutation?: Language;
4850
isExcelRequest?: boolean;
4951
}
5052

@@ -167,6 +169,7 @@ export const processGoOptions: GoContextInterface['transformOptions'] = (
167169
isExcelRequest,
168170
enforceEnglishForQuery = false,
169171
useCurrentLanguageForMutation = false,
172+
enforceLanguageForMutation,
170173
} = extraOptions;
171174

172175
const currentLanguage = getFromStorage<Language>(KEY_LANGUAGE_STORAGE) ?? 'en';
@@ -180,9 +183,17 @@ export const processGoOptions: GoContextInterface['transformOptions'] = (
180183
if (method === 'GET') {
181184
// Query
182185
defaultHeaders['Accept-Language'] = enforceEnglishForQuery ? 'en' : currentLanguage;
183-
} else {
186+
} else if (method === 'POST' || method === 'PUT' || method === 'PATCH') {
184187
// Mutation
185-
defaultHeaders['Accept-Language'] = useCurrentLanguageForMutation ? currentLanguage : 'en';
188+
if (isDefined(enforceLanguageForMutation)) {
189+
defaultHeaders['Accept-Language'] = enforceLanguageForMutation;
190+
} else if (useCurrentLanguageForMutation) {
191+
defaultHeaders['Accept-Language'] = currentLanguage;
192+
} else {
193+
defaultHeaders['Accept-Language'] = 'en';
194+
}
195+
} else {
196+
defaultHeaders['Accept-Language'] = currentLanguage ?? 'en';
186197
}
187198

188199
if (formData) {

app/src/views/AccountMyFormsDref/DrefTableActions/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ function DrefTableActions(props: Props) {
405405
dref: drefId,
406406
starting_language: startingLanguage === 'en' ? startingLanguage : selectOpsLanguage,
407407
} as unknown as OpsUpdateRequestBody),
408-
useCurrentLanguageForMutation: true,
408+
enforceLanguageForMutation: selectOpsLanguage,
409409
onSuccess: (response) => {
410410
navigate(
411411
'drefOperationalUpdateForm',
@@ -434,8 +434,8 @@ function DrefTableActions(props: Props) {
434434
} = useLazyRequest({
435435
method: 'POST',
436436
url: '/api/v2/dref-final-report/',
437+
enforceLanguageForMutation: selectFinalLanguage,
437438
// FIXME: the type should be fixed on the server
438-
useCurrentLanguageForMutation: true,
439439
body: (
440440
drefId: number,
441441
) => ({

app/src/views/DrefApplicationForm/Actions/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,7 @@ function Actions(props: Props) {
410410
setFileIdToUrlMap={setFileIdToUrlMap}
411411
disabled={disabled}
412412
clearable
413+
useCurrentLanguageForMutation
413414
>
414415
{strings.drefFormAssessmentReportUploadButtonLabel}
415416
</GoSingleFileInput>

app/src/views/DrefApplicationForm/EventDetail/index.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,7 @@ function EventDetail(props: Props) {
513513
setFileIdToUrlMap={setFileIdToUrlMap}
514514
error={getErrorObject(error?.images_file)}
515515
disabled={disabled || readOnly}
516+
useCurrentLanguageForMutation
516517
/>
517518
</InputSection>
518519
</>
@@ -601,6 +602,7 @@ function EventDetail(props: Props) {
601602
setFileIdToUrlMap={setFileIdToUrlMap}
602603
clearable
603604
disabled={disabled}
605+
useCurrentLanguageForMutation
604606
>
605607
{strings.drefFormUploadSupportingDocumentButton}
606608
</GoSingleFileInput>

app/src/views/DrefApplicationForm/Operation/index.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,7 @@ function Operation(props: Props) {
390390
setFileIdToUrlMap={setFileIdToUrlMap}
391391
clearable
392392
disabled={disabled}
393+
useCurrentLanguageForMutation
393394
>
394395
{strings.drefFormUploadTargetingDocumentButtonLabel}
395396
</GoSingleFileInput>
@@ -725,6 +726,7 @@ function Operation(props: Props) {
725726
setFileIdToUrlMap={setFileIdToUrlMap}
726727
error={error?.budget_file}
727728
disabled={disabled}
729+
useCurrentLanguageForMutation
728730
clearable
729731
description={(
730732
<Link
@@ -1068,6 +1070,7 @@ function Operation(props: Props) {
10681070
setFileIdToUrlMap={setFileIdToUrlMap}
10691071
clearable
10701072
disabled={disabled}
1073+
useCurrentLanguageForMutation
10711074
>
10721075
{strings.drefFormUploadSupportingDocumentButtonLabel}
10731076
</GoSingleFileInput>

app/src/views/DrefApplicationForm/Overview/index.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,7 @@ function Overview(props: Props) {
447447
setFileIdToUrlMap={setFileIdToUrlMap}
448448
clearable
449449
disabled={disabled}
450+
useCurrentLanguageForMutation
450451
>
451452
{strings.drefFormOverviewUploadDocumentButtonLabel}
452453
</GoSingleFileInput>
@@ -546,6 +547,7 @@ function Overview(props: Props) {
546547
setFileIdToUrlMap={setFileIdToUrlMap}
547548
label={strings.drefFormUploadAnImageLabel}
548549
disabled={disabled}
550+
useCurrentLanguageForMutation
549551
/>
550552
</InputSection>
551553
)}
@@ -567,6 +569,7 @@ function Overview(props: Props) {
567569
setFileIdToUrlMap={setFileIdToUrlMap}
568570
label={strings.drefFormUploadAnImageLabel}
569571
disabled={disabled}
572+
useCurrentLanguageForMutation
570573
/>
571574
</InputSection>
572575
)}

0 commit comments

Comments
 (0)