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

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

const React = require('react');
const { Switch, Pressable } = require('react-native');
const AppText = require('./AppText');
const styles = require('../../styles/common/AppSwitch.styles');
const { APP_COLORS } = require('../../config/theme');

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

//Компонент переключателя с меткой
function AppSwitch({ label, value, onValueChange, disabled = false, style, labelStyle }) {
    //Обработчик изменения значения
    const handleValueChange = React.useCallback(
        newValue => {
            if (!disabled && typeof onValueChange === 'function') {
                onValueChange(newValue);
            }
        },
        [disabled, onValueChange]
    );

    //Обработчик нажатия на контейнер (переключение значения)
    const handlePress = React.useCallback(() => {
        handleValueChange(!value);
    }, [handleValueChange, value]);

    return (
        <Pressable style={[styles.container, disabled && styles.containerDisabled, style]} onPress={handlePress} disabled={disabled}>
            {label ? (
                <AppText style={[styles.label, disabled && styles.labelDisabled, labelStyle]} numberOfLines={2}>
                    {label}
                </AppText>
            ) : null}

            <Switch
                value={value}
                onValueChange={handleValueChange}
                disabled={disabled}
                trackColor={{
                    false: APP_COLORS.borderMedium,
                    true: APP_COLORS.primaryLight
                }}
                thumbColor={value ? APP_COLORS.primary : APP_COLORS.white}
                ios_backgroundColor={APP_COLORS.borderMedium}
            />
        </Pressable>
    );
}

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

module.exports = AppSwitch;
