import React, { useEffect, useState } from 'react'
import { TouchableOpacity, View, StyleSheet, ActivityIndicator } from 'react-native'
import { LanguageSelector as LanguageSelectorController, useOrder } from 'ordering-components/native'
import CountryPicker, { Flag } from 'react-native-country-picker-modal'
import { Container, LanguageItem } from './styles'
import langCountries from './lang_country.json';
import { LanguageSelectorParams } from '../../types'
import { OText } from '../shared'
import MatarialIcon from "react-native-vector-icons/MaterialIcons"
import { useTheme } from 'styled-components/native'
import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder'
const LanguageSelectorUI = (props: LanguageSelectorParams) => {
const {
languagesState,
currentLanguage,
handleChangeLanguage,
} = props
const theme = useTheme()
const styles = StyleSheet.create({
closeIcon: {
width: 48, marginLeft: 32
},
flagsContainer: {
marginLeft: 40
}
})
const _languages = languagesState?.languages?.map((language: any) => {
return {
key: language?.code,
value: language?.code,
label: language?.name,
inputLabel: language?.code.toUpperCase(),
countryCode: langCountries.find((item) => item.value == language?.code)?.countryCode
}
})
_languages && _languages?.sort((a: any, b: any) =>
(a.content > b.content) ? 1 : ((b.content > a.content) ? -1 : 0)
)
const [orderState] = useOrder()
const [isCountryModalVisible, setCountryModalVisible] = useState(false);
const countryCodes = _languages?.map((item:any) => item.countryCode);
const currentLanguageData = _languages?.find((item:any) => item.value == currentLanguage);
return (
<>
{ languagesState.loading ?
(
):(
{languagesState?.languages && (
setCountryModalVisible(false)}
withCountryNameButton
countryCodes={countryCodes}
closeButtonStyle={styles.closeIcon}
renderFlagButton={() => (
orderState.loading ? {} : setCountryModalVisible(true)}
// disabled={orderState.loading}
>
{currentLanguageData?.label}
{orderState.loading ? (
) : (
)}
)}
flatListProps={{
/* @ts-ignore */
keyExtractor: (item) => item.value,
data: _languages || [],
renderItem: ({item} : any) => (
{
handleChangeLanguage(item.value);
setCountryModalVisible(false);
}}
disabled={orderState.loading}
>
{
/* @ts-ignore */
item.label
}
)
}}
/>
)}
)}
>
)
}
export const LanguageSelector = (props: LanguageSelectorParams) => {
const LanguageProps = {
...props,
UIComponent: LanguageSelectorUI
}
return
}