about summary refs log tree commit diff
path: root/src/view/screens/LanguageSettings.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/screens/LanguageSettings.tsx')
-rw-r--r--src/view/screens/LanguageSettings.tsx421
1 files changed, 212 insertions, 209 deletions
diff --git a/src/view/screens/LanguageSettings.tsx b/src/view/screens/LanguageSettings.tsx
index c1daa54e6..6af18103c 100644
--- a/src/view/screens/LanguageSettings.tsx
+++ b/src/view/screens/LanguageSettings.tsx
@@ -19,9 +19,10 @@ import {useModalControls} from '#/state/modals'
 import {useLanguagePrefs, useLanguagePrefsApi} from '#/state/preferences'
 import {useSetMinimalShellMode} from '#/state/shell'
 import {Button} from '#/view/com/util/forms/Button'
+import {Text} from '#/view/com/util/text/Text'
 import {ViewHeader} from '#/view/com/util/ViewHeader'
 import {CenteredView} from '#/view/com/util/Views'
-import {Text} from '../com/util/text/Text'
+import * as Layout from '#/components/Layout'
 
 type Props = NativeStackScreenProps<CommonNavigatorParams, 'LanguageSettings'>
 
@@ -76,232 +77,234 @@ export function LanguageSettingsScreen(_props: Props) {
   }, [langPrefs.contentLanguages])
 
   return (
-    <CenteredView
-      style={[
-        pal.view,
-        pal.border,
-        styles.container,
-        isTabletOrDesktop && styles.desktopContainer,
-      ]}>
-      <ViewHeader title={_(msg`Language Settings`)} showOnDesktop />
+    <Layout.Screen testID="PreferencesLanguagesScreen">
+      <CenteredView
+        style={[
+          pal.view,
+          pal.border,
+          styles.container,
+          isTabletOrDesktop && styles.desktopContainer,
+        ]}>
+        <ViewHeader title={_(msg`Language Settings`)} showOnDesktop />
 
-      <View style={{paddingTop: 20, paddingHorizontal: 20}}>
-        {/* APP LANGUAGE */}
-        <View style={{paddingBottom: 20}}>
-          <Text type="title-sm" style={[pal.text, s.pb5]}>
-            <Trans>App Language</Trans>
-          </Text>
-          <Text style={[pal.text, s.pb10]}>
-            <Trans>
-              Select your app language for the default text to display in the
-              app.
-            </Trans>
-          </Text>
+        <View style={{paddingTop: 20, paddingHorizontal: 20}}>
+          {/* APP LANGUAGE */}
+          <View style={{paddingBottom: 20}}>
+            <Text type="title-sm" style={[pal.text, s.pb5]}>
+              <Trans>App Language</Trans>
+            </Text>
+            <Text style={[pal.text, s.pb10]}>
+              <Trans>
+                Select your app language for the default text to display in the
+                app.
+              </Trans>
+            </Text>
 
-          <View style={{position: 'relative'}}>
-            <RNPickerSelect
-              placeholder={{}}
-              value={sanitizeAppLanguageSetting(langPrefs.appLanguage)}
-              onValueChange={onChangeAppLanguage}
-              items={APP_LANGUAGES.filter(l => Boolean(l.code2)).map(l => ({
-                label: l.name,
-                value: l.code2,
-                key: l.code2,
-              }))}
-              style={{
-                inputAndroid: {
-                  backgroundColor: pal.viewLight.backgroundColor,
-                  color: pal.text.color,
-                  fontSize: 14,
-                  letterSpacing: 0.5,
-                  fontWeight: '600',
-                  paddingHorizontal: 14,
-                  paddingVertical: 8,
-                  borderRadius: 24,
-                },
-                inputIOS: {
-                  backgroundColor: pal.viewLight.backgroundColor,
-                  color: pal.text.color,
-                  fontSize: 14,
-                  letterSpacing: 0.5,
-                  fontWeight: '600',
-                  paddingHorizontal: 14,
-                  paddingVertical: 8,
-                  borderRadius: 24,
-                },
+            <View style={{position: 'relative'}}>
+              <RNPickerSelect
+                placeholder={{}}
+                value={sanitizeAppLanguageSetting(langPrefs.appLanguage)}
+                onValueChange={onChangeAppLanguage}
+                items={APP_LANGUAGES.filter(l => Boolean(l.code2)).map(l => ({
+                  label: l.name,
+                  value: l.code2,
+                  key: l.code2,
+                }))}
+                style={{
+                  inputAndroid: {
+                    backgroundColor: pal.viewLight.backgroundColor,
+                    color: pal.text.color,
+                    fontSize: 14,
+                    letterSpacing: 0.5,
+                    fontWeight: '600',
+                    paddingHorizontal: 14,
+                    paddingVertical: 8,
+                    borderRadius: 24,
+                  },
+                  inputIOS: {
+                    backgroundColor: pal.viewLight.backgroundColor,
+                    color: pal.text.color,
+                    fontSize: 14,
+                    letterSpacing: 0.5,
+                    fontWeight: '600',
+                    paddingHorizontal: 14,
+                    paddingVertical: 8,
+                    borderRadius: 24,
+                  },
+
+                  inputWeb: {
+                    cursor: 'pointer',
+                    // @ts-ignore web only
+                    '-moz-appearance': 'none',
+                    '-webkit-appearance': 'none',
+                    appearance: 'none',
+                    outline: 0,
+                    borderWidth: 0,
+                    backgroundColor: pal.viewLight.backgroundColor,
+                    color: pal.text.color,
+                    fontSize: 14,
+                    fontFamily: 'inherit',
+                    letterSpacing: 0.5,
+                    fontWeight: '600',
+                    paddingHorizontal: 14,
+                    paddingVertical: 8,
+                    borderRadius: 24,
+                  },
+                }}
+              />
 
-                inputWeb: {
-                  cursor: 'pointer',
-                  // @ts-ignore web only
-                  '-moz-appearance': 'none',
-                  '-webkit-appearance': 'none',
-                  appearance: 'none',
-                  outline: 0,
-                  borderWidth: 0,
+              <View
+                style={{
+                  position: 'absolute',
+                  top: 1,
+                  right: 1,
+                  bottom: 1,
+                  width: 40,
                   backgroundColor: pal.viewLight.backgroundColor,
-                  color: pal.text.color,
-                  fontSize: 14,
-                  fontFamily: 'inherit',
-                  letterSpacing: 0.5,
-                  fontWeight: '600',
-                  paddingHorizontal: 14,
-                  paddingVertical: 8,
                   borderRadius: 24,
-                },
-              }}
-            />
-
-            <View
-              style={{
-                position: 'absolute',
-                top: 1,
-                right: 1,
-                bottom: 1,
-                width: 40,
-                backgroundColor: pal.viewLight.backgroundColor,
-                borderRadius: 24,
-                pointerEvents: 'none',
-                alignItems: 'center',
-                justifyContent: 'center',
-              }}>
-              <FontAwesomeIcon
-                icon="chevron-down"
-                style={pal.text as FontAwesomeIconStyle}
-              />
+                  pointerEvents: 'none',
+                  alignItems: 'center',
+                  justifyContent: 'center',
+                }}>
+                <FontAwesomeIcon
+                  icon="chevron-down"
+                  style={pal.text as FontAwesomeIconStyle}
+                />
+              </View>
             </View>
           </View>
-        </View>
 
-        <View
-          style={{
-            height: 1,
-            backgroundColor: pal.border.borderColor,
-            marginBottom: 20,
-          }}
-        />
+          <View
+            style={{
+              height: 1,
+              backgroundColor: pal.border.borderColor,
+              marginBottom: 20,
+            }}
+          />
 
-        {/* PRIMARY LANGUAGE */}
-        <View style={{paddingBottom: 20}}>
-          <Text type="title-sm" style={[pal.text, s.pb5]}>
-            <Trans>Primary Language</Trans>
-          </Text>
-          <Text style={[pal.text, s.pb10]}>
-            <Trans>
-              Select your preferred language for translations in your feed.
-            </Trans>
-          </Text>
+          {/* PRIMARY LANGUAGE */}
+          <View style={{paddingBottom: 20}}>
+            <Text type="title-sm" style={[pal.text, s.pb5]}>
+              <Trans>Primary Language</Trans>
+            </Text>
+            <Text style={[pal.text, s.pb10]}>
+              <Trans>
+                Select your preferred language for translations in your feed.
+              </Trans>
+            </Text>
 
-          <View style={{position: 'relative'}}>
-            <RNPickerSelect
-              placeholder={{}}
-              value={langPrefs.primaryLanguage}
-              onValueChange={onChangePrimaryLanguage}
-              items={LANGUAGES.filter(l => Boolean(l.code2)).map(l => ({
-                label: l.name,
-                value: l.code2,
-                key: l.code2 + l.code3,
-              }))}
-              style={{
-                inputAndroid: {
-                  backgroundColor: pal.viewLight.backgroundColor,
-                  color: pal.text.color,
-                  fontSize: 14,
-                  letterSpacing: 0.5,
-                  fontWeight: '600',
-                  paddingHorizontal: 14,
-                  paddingVertical: 8,
-                  borderRadius: 24,
-                },
-                inputIOS: {
-                  backgroundColor: pal.viewLight.backgroundColor,
-                  color: pal.text.color,
-                  fontSize: 14,
-                  letterSpacing: 0.5,
-                  fontWeight: '600',
-                  paddingHorizontal: 14,
-                  paddingVertical: 8,
-                  borderRadius: 24,
-                },
-                inputWeb: {
-                  cursor: 'pointer',
-                  // @ts-ignore web only
-                  '-moz-appearance': 'none',
-                  '-webkit-appearance': 'none',
-                  appearance: 'none',
-                  outline: 0,
-                  borderWidth: 0,
+            <View style={{position: 'relative'}}>
+              <RNPickerSelect
+                placeholder={{}}
+                value={langPrefs.primaryLanguage}
+                onValueChange={onChangePrimaryLanguage}
+                items={LANGUAGES.filter(l => Boolean(l.code2)).map(l => ({
+                  label: l.name,
+                  value: l.code2,
+                  key: l.code2 + l.code3,
+                }))}
+                style={{
+                  inputAndroid: {
+                    backgroundColor: pal.viewLight.backgroundColor,
+                    color: pal.text.color,
+                    fontSize: 14,
+                    letterSpacing: 0.5,
+                    fontWeight: '600',
+                    paddingHorizontal: 14,
+                    paddingVertical: 8,
+                    borderRadius: 24,
+                  },
+                  inputIOS: {
+                    backgroundColor: pal.viewLight.backgroundColor,
+                    color: pal.text.color,
+                    fontSize: 14,
+                    letterSpacing: 0.5,
+                    fontWeight: '600',
+                    paddingHorizontal: 14,
+                    paddingVertical: 8,
+                    borderRadius: 24,
+                  },
+                  inputWeb: {
+                    cursor: 'pointer',
+                    // @ts-ignore web only
+                    '-moz-appearance': 'none',
+                    '-webkit-appearance': 'none',
+                    appearance: 'none',
+                    outline: 0,
+                    borderWidth: 0,
+                    backgroundColor: pal.viewLight.backgroundColor,
+                    color: pal.text.color,
+                    fontSize: 14,
+                    fontFamily: 'inherit',
+                    letterSpacing: 0.5,
+                    fontWeight: '600',
+                    paddingHorizontal: 14,
+                    paddingVertical: 8,
+                    borderRadius: 24,
+                  },
+                }}
+              />
+
+              <View
+                style={{
+                  position: 'absolute',
+                  top: 1,
+                  right: 1,
+                  bottom: 1,
+                  width: 40,
                   backgroundColor: pal.viewLight.backgroundColor,
-                  color: pal.text.color,
-                  fontSize: 14,
-                  fontFamily: 'inherit',
-                  letterSpacing: 0.5,
-                  fontWeight: '600',
-                  paddingHorizontal: 14,
-                  paddingVertical: 8,
                   borderRadius: 24,
-                },
-              }}
-            />
-
-            <View
-              style={{
-                position: 'absolute',
-                top: 1,
-                right: 1,
-                bottom: 1,
-                width: 40,
-                backgroundColor: pal.viewLight.backgroundColor,
-                borderRadius: 24,
-                pointerEvents: 'none',
-                alignItems: 'center',
-                justifyContent: 'center',
-              }}>
-              <FontAwesomeIcon
-                icon="chevron-down"
-                style={pal.text as FontAwesomeIconStyle}
-              />
+                  pointerEvents: 'none',
+                  alignItems: 'center',
+                  justifyContent: 'center',
+                }}>
+                <FontAwesomeIcon
+                  icon="chevron-down"
+                  style={pal.text as FontAwesomeIconStyle}
+                />
+              </View>
             </View>
           </View>
-        </View>
-
-        <View
-          style={{
-            height: 1,
-            backgroundColor: pal.border.borderColor,
-            marginBottom: 20,
-          }}
-        />
 
-        {/* CONTENT LANGUAGES */}
-        <View style={{paddingBottom: 20}}>
-          <Text type="title-sm" style={[pal.text, s.pb5]}>
-            <Trans>Content Languages</Trans>
-          </Text>
-          <Text style={[pal.text, s.pb10]}>
-            <Trans>
-              Select which languages you want your subscribed feeds to include.
-              If none are selected, all languages will be shown.
-            </Trans>
-          </Text>
+          <View
+            style={{
+              height: 1,
+              backgroundColor: pal.border.borderColor,
+              marginBottom: 20,
+            }}
+          />
 
-          <Button
-            type="default"
-            onPress={onPressContentLanguages}
-            style={styles.button}>
-            <FontAwesomeIcon
-              icon={myLanguages.length ? 'check' : 'plus'}
-              style={pal.text as FontAwesomeIconStyle}
-            />
-            <Text
-              type="button"
-              style={[pal.text, {flexShrink: 1, overflow: 'hidden'}]}
-              numberOfLines={1}>
-              {myLanguages.length ? myLanguages : _(msg`Select languages`)}
+          {/* CONTENT LANGUAGES */}
+          <View style={{paddingBottom: 20}}>
+            <Text type="title-sm" style={[pal.text, s.pb5]}>
+              <Trans>Content Languages</Trans>
             </Text>
-          </Button>
+            <Text style={[pal.text, s.pb10]}>
+              <Trans>
+                Select which languages you want your subscribed feeds to
+                include. If none are selected, all languages will be shown.
+              </Trans>
+            </Text>
+
+            <Button
+              type="default"
+              onPress={onPressContentLanguages}
+              style={styles.button}>
+              <FontAwesomeIcon
+                icon={myLanguages.length ? 'check' : 'plus'}
+                style={pal.text as FontAwesomeIconStyle}
+              />
+              <Text
+                type="button"
+                style={[pal.text, {flexShrink: 1, overflow: 'hidden'}]}
+                numberOfLines={1}>
+                {myLanguages.length ? myLanguages : _(msg`Select languages`)}
+              </Text>
+            </Button>
+          </View>
         </View>
-      </View>
-    </CenteredView>
+      </CenteredView>
+    </Layout.Screen>
   )
 }