import { RoomDataParser } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { IRoomData, LocalizeText } from '../../../../api'; import { Column, Flex, Text } from '../../../../common'; import { NavigatorRoomSettingsSectionView } from './NavigatorRoomSettingsSectionView'; interface NavigatorRoomSettingsTabViewProps { roomData: IRoomData; handleChange: (field: string, value: string | number | boolean) => void; } export const NavigatorRoomSettingsAccessTabView: FC = props => { const { roomData = null, handleChange = null } = props; const [ password, setPassword ] = useState(''); const [ confirmPassword, setConfirmPassword ] = useState(''); const [ isTryingPassword, setIsTryingPassword ] = useState(false); const saveRoomPassword = () => { if(!isTryingPassword || ((password.length <= 0) || (confirmPassword.length <= 0) || (password !== confirmPassword))) return; handleChange('password', password); }; useEffect(() => { setPassword(''); setConfirmPassword(''); setIsTryingPassword(false); }, [ roomData ]); return ( <> { LocalizeText('navigator.roomsettings.roomaccess.caption') } { LocalizeText('navigator.roomsettings.roomaccess.info') } handleChange('lock_state', RoomDataParser.OPEN_STATE) } /> { LocalizeText('navigator.roomsettings.doormode.open') } handleChange('lock_state', RoomDataParser.DOORBELL_STATE) } /> { LocalizeText('navigator.roomsettings.doormode.doorbell') } handleChange('lock_state', RoomDataParser.INVISIBLE_STATE) } /> { LocalizeText('navigator.roomsettings.doormode.invisible') } setIsTryingPassword(event.target.checked) } /> { !isTryingPassword && (roomData.lockState !== RoomDataParser.PASSWORD_STATE) && { LocalizeText('navigator.roomsettings.doormode.password') } } { (isTryingPassword || (roomData.lockState === RoomDataParser.PASSWORD_STATE)) && { LocalizeText('navigator.roomsettings.doormode.password') } setPassword(event.target.value) } placeholder={ LocalizeText('navigator.roomsettings.password') } onFocus={ event => setIsTryingPassword(true) } /> { isTryingPassword && (password.length <= 0) && { LocalizeText('navigator.roomsettings.passwordismandatory') } } setConfirmPassword(event.target.value) } onBlur={ saveRoomPassword } placeholder={ LocalizeText('navigator.roomsettings.passwordconfirm') } /> { isTryingPassword && ((password.length > 0) && (password !== confirmPassword)) && { LocalizeText('navigator.roomsettings.invalidconfirm') } } } handleChange('allow_pets', event.target.checked) } /> { LocalizeText('navigator.roomsettings.allowpets') } handleChange('allow_pets_eat', event.target.checked) } /> { LocalizeText('navigator.roomsettings.allowfoodconsume') } ); };