import { useMutation } from '@apollo/react-hooks' import { useTheme } from '@react-navigation/native' import gql from 'graphql-tag' import PropTypes from 'prop-types' import React, { useState } from 'react' import { Alert, TouchableOpacity, View } from 'react-native' import { TextField } from 'react-native-material-textfield' import Modal from 'react-native-modal' import i18n from '../../../i18n' import { changePassword } from '../../apollo/server' import { FlashMessage } from '../../components/FlashMessage/FlashMessage' import TextDefault from '../../components/Text/TextDefault/TextDefault' import { alignment } from '../../utils/alignment' import { scale } from '../../utils/scaling' import useStyle from './styles' const CHANGE_PASSWORD = gql` ${changePassword} ` function ChangePassword(props) { const styles = useStyle() const { colors } = useTheme() const [oldPassword, setOldPassword] = useState('') const [newPassword, setNewPassword] = useState('') const [oldPasswordError, setOldPasswordError] = useState('') const [newPasswordError, setNewPasswordError] = useState('') const [mutate, { loading }] = useMutation(CHANGE_PASSWORD, { onError, onCompleted }) function onError(error) { if (error.networkError) { FlashMessage({ message: error.networkError.result.errors[0].message }) } else if (error.graphQLErrors) { FlashMessage({ message: error.graphQLErrors[0].message }) } } function clearFields() { setOldPassword('') setNewPassword('') setOldPasswordError('') setNewPasswordError('') } function onCompleted(data) { if (data.changePassword) { clearFields() FlashMessage({ message: i18n.t('passChange') }) props.hideModal() } else { Alert.alert('Error', i18n.t('invalidPass')) } } return ( {i18n.t('changePass')} { setOldPasswordError(!oldPassword ? i18n.t('passReq') : '') }} /> { setNewPasswordError(!newPassword ? i18n.t('passReq') : '') }} /> { const newPasswordError = newPassword === '' ? i18n.t('passReq') : '' const oldPasswordError = oldPassword === '' ? i18n.t('passReq') : '' setNewPasswordError(newPasswordError) setOldPasswordError(oldPasswordError) if ( oldPasswordError.length === 0 && newPasswordError.length === 0 ) { mutate({ variables: { oldPassword, newPassword } }) } }} style={[styles.btnContainer]}> {i18n.t('apply')} ) } ChangePassword.propTypes = { hideModal: PropTypes.func, modalVisible: PropTypes.bool.isRequired } export default ChangePassword