/*
    Предрейсовые осмотры - мобильное приложение
    Компонент информации о пользователе и режиме работы в меню
*/

//---------------------
//Подключение библиотек
//---------------------

const React = require('react');
const { View } = require('react-native');
const AppText = require('../common/AppText');
const { getModeLabel } = require('../../utils/appInfo');
const styles = require('../../styles/menu/MenuUserInfo.styles');

//-----------
//Тело модуля
//-----------

//Компонент информации о пользователе и режиме работы
function MenuUserInfo({ mode, username, organization, isConnected }) {
    //Получение стиля для индикатора режима
    const getModeStyle = React.useCallback(() => {
        switch (mode) {
            case 'ONLINE':
                return styles.modeOnline;
            case 'OFFLINE':
                return styles.modeOffline;
            case 'NOT_CONNECTED':
            default:
                return styles.modeNotConnected;
        }
    }, [mode]);

    //Получение стиля текста для режима
    const getModeTextStyle = React.useCallback(() => {
        switch (mode) {
            case 'ONLINE':
                return styles.modeTextOnline;
            case 'OFFLINE':
                return styles.modeTextOffline;
            case 'NOT_CONNECTED':
            default:
                return styles.modeTextNotConnected;
        }
    }, [mode]);

    return (
        <View style={styles.container}>
            <View style={[styles.modeContainer, getModeStyle()]}>
                <AppText style={[styles.modeText, getModeTextStyle()]}>{getModeLabel(mode)}</AppText>
            </View>

            {isConnected && (username || organization) ? (
                <View style={styles.userInfo}>
                    {username ? (
                        <View style={styles.userRow}>
                            <AppText style={styles.userLabel}>Пользователь:</AppText>
                            <AppText style={styles.userValue} numberOfLines={1}>
                                {username}
                            </AppText>
                        </View>
                    ) : null}

                    {organization ? (
                        <View style={styles.userRow}>
                            <AppText style={styles.userLabel}>Организация:</AppText>
                            <AppText style={styles.userValue} numberOfLines={1}>
                                {organization}
                            </AppText>
                        </View>
                    ) : null}
                </View>
            ) : null}
        </View>
    );
}

//----------------
//Интерфейс модуля
//----------------

module.exports = MenuUserInfo;
