about summary refs log tree commit diff
path: root/src/view/com/modals/lang-settings/LanguageToggle.tsx
blob: df1b405cad309794f088252cff65cf7e66558d75 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import React from 'react'
import {StyleSheet} from 'react-native'
import {usePalette} from 'lib/hooks/usePalette'
import {observer} from 'mobx-react-lite'
import {ToggleButton} from 'view/com/util/forms/ToggleButton'
import {useStores} from 'state/index'

export const LanguageToggle = observer(
  ({
    code2,
    name,
    onPress,
    langType,
  }: {
    code2: string
    name: string
    onPress: () => void
    langType: 'contentLanguages' | 'postLanguages'
  }) => {
    const pal = usePalette('default')
    const store = useStores()

    const isSelected = store.preferences[langType].includes(code2)

    // enforce a max of 3 selections for post languages
    let isDisabled = false
    if (
      langType === 'postLanguages' &&
      store.preferences[langType].length >= 3 &&
      !isSelected
    ) {
      isDisabled = true
    }

    return (
      <ToggleButton
        label={name}
        isSelected={isSelected}
        onPress={isDisabled ? undefined : onPress}
        style={[pal.border, styles.languageToggle, isDisabled && styles.dimmed]}
      />
    )
  },
)

const styles = StyleSheet.create({
  languageToggle: {
    borderTopWidth: 1,
    borderRadius: 0,
    paddingHorizontal: 6,
    paddingVertical: 12,
  },
  dimmed: {
    opacity: 0.5,
  },
})