import React from 'react'; import { StyleSheet, Text, TextInputProps, TouchableOpacity, TouchableOpacityProps, View } from 'react-native'; import I18n from '../../../i18n'; import sharedStyles from '../../Styles'; import { CustomIcon } from '../../../containers/CustomIcon'; import { useTheme } from '../../../theme'; import SearchHeader from '../../../containers/SearchHeader'; import { useAppSelector } from '../../../lib/hooks'; const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center' }, button: { flexDirection: 'row', alignItems: 'center' }, title: { flexShrink: 1, fontSize: 16, ...sharedStyles.textSemibold }, subtitle: { fontSize: 14, ...sharedStyles.textRegular }, upsideDown: { transform: [{ scaleY: -1 }] } }); interface IRoomHeader { connecting: boolean; connected: boolean; isFetching: boolean; serverName: string; server: string; showServerDropdown: boolean; showSearchHeader: boolean; onSearchChangeText: TextInputProps['onChangeText']; onPress: TouchableOpacityProps['onPress']; } const Header = React.memo( ({ connecting, connected, isFetching, serverName = 'Rocket.Chat', server, showServerDropdown, showSearchHeader, onSearchChangeText, onPress }: IRoomHeader) => { const { status: supportedVersionsStatus } = useAppSelector(state => state.supportedVersions); const { colors } = useTheme(); if (showSearchHeader) { return ; } let subtitle; if (supportedVersionsStatus === 'expired') { subtitle = 'Cannot connect'; } else if (connecting) { subtitle = I18n.t('Connecting'); } else if (isFetching) { subtitle = I18n.t('Updating'); } else if (!connected) { subtitle = I18n.t('Waiting_for_network'); } else { subtitle = server?.replace(/(^\w+:|^)\/\//, ''); } return ( {serverName} {subtitle ? ( {subtitle} ) : null} ); } ); export default Header;