Skip to content

Commit 9ac7a3e

Browse files
authored
fix(ui): adds fallback locale when defaultLocale is unavailable (#11614)
1 parent 051c1fe commit 9ac7a3e

File tree

4 files changed

+19
-14
lines changed

4 files changed

+19
-14
lines changed

packages/ui/src/fields/Array/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export const ArrayFieldComponent: ArrayFieldClientComponent = (props) => {
6969

7070
const editingDefaultLocale = (() => {
7171
if (localization && localization.fallback) {
72-
const defaultLocale = localization.defaultLocale || 'en'
72+
const defaultLocale = localization.defaultLocale
7373
return locale === defaultLocale
7474
}
7575

packages/ui/src/fields/Blocks/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ const BlocksFieldComponent: BlocksFieldClientComponent = (props) => {
7676

7777
const editingDefaultLocale = (() => {
7878
if (localization && localization.fallback) {
79-
const defaultLocale = localization.defaultLocale || 'en'
79+
const defaultLocale = localization.defaultLocale
8080
return locale === defaultLocale
8181
}
8282

packages/ui/src/forms/NullifyField/index.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,15 @@ export const NullifyLocaleField: React.FC<NullifyLocaleFieldProps> = ({
2424
config: { localization },
2525
} = useConfig()
2626
const [checked, setChecked] = React.useState<boolean>(typeof fieldValue !== 'number')
27-
const defaultLocale =
28-
localization && localization.defaultLocale ? localization.defaultLocale : 'en'
2927
const { t } = useTranslation()
3028

31-
if (!localized || currentLocale === defaultLocale || (localization && !localization.fallback)) {
32-
// hide when field is not localized or editing default locale or when fallback is disabled
29+
if (!localized || !localization) {
30+
// hide when field is not localized or localization is not enabled
31+
return null
32+
}
33+
34+
if (localization.defaultLocale === currentLocale || !localization.fallback) {
35+
// if editing default locale or when fallback is disabled
3336
return null
3437
}
3538

packages/ui/src/providers/Locale/index.tsx

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,22 +48,22 @@ export const LocaleProvider: React.FC<{ children?: React.ReactNode; locale?: Loc
4848

4949
const { user } = useAuth()
5050

51-
const defaultLocale =
52-
localization && localization.defaultLocale ? localization.defaultLocale : 'en'
51+
const defaultLocale = localization ? localization.defaultLocale : 'en'
5352

5453
const { getPreference, setPreference } = usePreferences()
5554
const localeFromParams = useSearchParams().get('locale')
5655

5756
const [locale, setLocale] = React.useState<Locale>(() => {
58-
if (!localization) {
57+
if (!localization || (localization && !localization.locales.length)) {
5958
// TODO: return null V4
6059
return {} as Locale
6160
}
6261

6362
return (
6463
findLocaleFromCode(localization, localeFromParams) ||
6564
findLocaleFromCode(localization, initialLocaleFromPrefs) ||
66-
findLocaleFromCode(localization, defaultLocale)
65+
findLocaleFromCode(localization, defaultLocale) ||
66+
findLocaleFromCode(localization, localization.locales[0].code)
6767
)
6868
})
6969

@@ -97,14 +97,16 @@ export const LocaleProvider: React.FC<{ children?: React.ReactNode; locale?: Loc
9797
if (localization && user?.id) {
9898
const localeToUse =
9999
localeFromParams ||
100-
(await fetchPreferences<Locale['code']>('locale', fetchURL)?.then((res) => res.value)) ||
101-
defaultLocale
100+
(await fetchPreferences<Locale['code']>('locale', fetchURL)?.then((res) => res.value))
102101

103102
const newLocale =
104103
findLocaleFromCode(localization, localeToUse) ||
105-
findLocaleFromCode(localization, defaultLocale)
104+
findLocaleFromCode(localization, defaultLocale) ||
105+
findLocaleFromCode(localization, localization?.locales?.[0]?.code)
106106

107-
setLocale(newLocale)
107+
if (newLocale) {
108+
setLocale(newLocale)
109+
}
108110
}
109111
}
110112

0 commit comments

Comments
 (0)