snapshot of https://github.com/jitsi/jitsi-meet.git @ fd1749dd28f4138aa80234fc7f311b19aaffa0e7 (2026-09-15)
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
import { useNavigation } from '@react-navigation/native';
|
||||
import React, { useCallback, useLayoutEffect } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { GestureResponderEvent, ScrollView, Text, TouchableHighlight, View, ViewStyle } from 'react-native';
|
||||
import { Edge } from 'react-native-safe-area-context';
|
||||
import { useSelector } from 'react-redux';
|
||||
|
||||
import { IReduxState } from '../../../app/types';
|
||||
import i18next, { DEFAULT_LANGUAGE, LANGUAGES } from '../../../base/i18n/i18next';
|
||||
import { IconArrowLeft } from '../../../base/icons/svg';
|
||||
import JitsiScreen from '../../../base/modal/components/JitsiScreen';
|
||||
import BaseThemeNative from '../../../base/ui/components/BaseTheme.native';
|
||||
import HeaderNavigationButton from '../../../mobile/navigation/components/HeaderNavigationButton';
|
||||
|
||||
import styles from './styles';
|
||||
|
||||
const LanguageSelectView = ({ goBack, isInWelcomePage }: {
|
||||
goBack?: (e?: GestureResponderEvent | React.MouseEvent) => void;
|
||||
isInWelcomePage?: boolean;
|
||||
}) => {
|
||||
const { t } = useTranslation();
|
||||
const navigation = useNavigation();
|
||||
const { conference } = useSelector((state: IReduxState) => state['features/base/conference']);
|
||||
const { language: currentLanguage = DEFAULT_LANGUAGE } = i18next;
|
||||
|
||||
const setLanguage = useCallback(language => () => {
|
||||
i18next.changeLanguage(language);
|
||||
conference?.setTranscriptionLanguage(language);
|
||||
goBack?.();
|
||||
}, [ conference, i18next ]);
|
||||
|
||||
const headerLeft = () => (
|
||||
<HeaderNavigationButton
|
||||
color = { BaseThemeNative.palette.link01 }
|
||||
onPress = { goBack }
|
||||
src = { IconArrowLeft }
|
||||
style = { styles.backBtn }
|
||||
twoActions = { true } />
|
||||
);
|
||||
|
||||
useLayoutEffect(() => {
|
||||
navigation.setOptions({
|
||||
headerLeft
|
||||
});
|
||||
}, [ navigation ]);
|
||||
|
||||
return (
|
||||
<JitsiScreen
|
||||
disableForcedKeyboardDismiss = { true }
|
||||
safeAreaInsets = { [ !isInWelcomePage && 'bottom', 'left', 'right' ].filter(Boolean) as Edge[] }
|
||||
style = { styles.settingsViewContainer }>
|
||||
<ScrollView
|
||||
bounces = { isInWelcomePage }
|
||||
contentContainerStyle = { styles.profileView as ViewStyle }>
|
||||
{
|
||||
LANGUAGES.map(language => (
|
||||
<TouchableHighlight
|
||||
disabled = { currentLanguage === language }
|
||||
key = { language }
|
||||
onPress = { setLanguage(language) }>
|
||||
<View
|
||||
style = { styles.languageOption as ViewStyle }>
|
||||
<Text
|
||||
style = { [
|
||||
styles.text,
|
||||
styles.fieldLabelText,
|
||||
currentLanguage === language && styles.selectedLanguage ] }>
|
||||
{ t(`languages:${language}`) }
|
||||
</Text>
|
||||
</View>
|
||||
</TouchableHighlight>
|
||||
))
|
||||
}
|
||||
</ScrollView>
|
||||
</JitsiScreen>
|
||||
);
|
||||
};
|
||||
|
||||
export default LanguageSelectView;
|
||||
Reference in New Issue
Block a user