|
@ -23,6 +23,7 @@ import moment from "moment"; |
|
|
import { Shadow } from "react-native-shadow-2"; |
|
|
import { Shadow } from "react-native-shadow-2"; |
|
|
import SearchablePicker from "../components/SearchablePicker"; |
|
|
import SearchablePicker from "../components/SearchablePicker"; |
|
|
import { states, statesToCities } from "../assets/cities_states"; |
|
|
import { states, statesToCities } from "../assets/cities_states"; |
|
|
|
|
|
import institutions from "../assets/institutions"; |
|
|
import { useFormikContext } from "formik"; |
|
|
import { useFormikContext } from "formik"; |
|
|
import { |
|
|
import { |
|
|
signup, |
|
|
signup, |
|
@ -35,6 +36,7 @@ import { AuthContext } from "../auth/context"; |
|
|
import authStorage from "../auth/storage"; |
|
|
import authStorage from "../auth/storage"; |
|
|
import ConfirmationModal from "../components/ConfirmationModal"; |
|
|
import ConfirmationModal from "../components/ConfirmationModal"; |
|
|
import PasswordFormField from "../components/forms/PasswordFormField"; |
|
|
import PasswordFormField from "../components/forms/PasswordFormField"; |
|
|
|
|
|
import constants from "../config/constants"; |
|
|
|
|
|
|
|
|
const phoneRegex = RegExp( |
|
|
const phoneRegex = RegExp( |
|
|
/^\(?[\(]?([0-9]{2,3})?\)?[)\b]?([0-9]{4,5})[-. ]?([0-9]{4})$/ |
|
|
/^\(?[\(]?([0-9]{2,3})?\)?[)\b]?([0-9]{4,5})[-. ]?([0-9]{4})$/ |
|
@ -190,6 +192,42 @@ function CityPicker({ name }) { |
|
|
); |
|
|
); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function InstitutionNamePicker({ name }) { |
|
|
|
|
|
const { values } = useFormikContext(); |
|
|
|
|
|
const state = values["state"]; |
|
|
|
|
|
const instType = values["institution"]; |
|
|
|
|
|
const [items, setItems] = useState([]); |
|
|
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
|
try { |
|
|
|
|
|
if (state && instType) { |
|
|
|
|
|
const insts = institutions[state] && institutions[state][instType]; |
|
|
|
|
|
console.log(insts); |
|
|
|
|
|
insts ? setItems(insts) : setItems([]); |
|
|
|
|
|
} |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
console.log(e); |
|
|
|
|
|
} |
|
|
|
|
|
}, [state, instType]); |
|
|
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
|
|
<SearchablePicker |
|
|
|
|
|
name={name} |
|
|
|
|
|
items={items} |
|
|
|
|
|
setItems={setItems} |
|
|
|
|
|
formPlaceholder={"Selecione o nome da instituição"} |
|
|
|
|
|
nothingToShow={ |
|
|
|
|
|
institutions?.state?.instType |
|
|
|
|
|
? "Não encontramos nada com esse termo" |
|
|
|
|
|
: state && instType |
|
|
|
|
|
? `Nenhuma instituição do tipo ${constants.institutionMap[instType]} no ${constants.statesMap[state]}` |
|
|
|
|
|
: "Selecione o Estado e o tipo da instituição primeiro" |
|
|
|
|
|
} |
|
|
|
|
|
searchPlaceholder={"Busca..."} |
|
|
|
|
|
/> |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
function SecQuestionPicker({ name }) { |
|
|
function SecQuestionPicker({ name }) { |
|
|
const [items, setItems] = useState([ |
|
|
const [items, setItems] = useState([ |
|
|
{ value: "Qual a sua cor predileta?", label: "Qual a sua cor predileta?" }, |
|
|
{ value: "Qual a sua cor predileta?", label: "Qual a sua cor predileta?" }, |
|
@ -265,7 +303,7 @@ export default function RegisterScreen(props) { |
|
|
const [date, setDate] = useState(_moment); |
|
|
const [date, setDate] = useState(_moment); |
|
|
const [singUpFailed, setSingUpFailed] = useState(false); |
|
|
const [singUpFailed, setSingUpFailed] = useState(false); |
|
|
const [scroll, setScroll] = useState(); |
|
|
const [scroll, setScroll] = useState(); |
|
|
const [showLog, setShowLog] = useState({show: false, message: ""}); |
|
|
|
|
|
|
|
|
const [showLog, setShowLog] = useState({ show: false, message: "" }); |
|
|
|
|
|
|
|
|
const comparePassword = (password, confirmPassword) => { |
|
|
const comparePassword = (password, confirmPassword) => { |
|
|
if (password !== confirmPassword) { |
|
|
if (password !== confirmPassword) { |
|
@ -296,15 +334,17 @@ export default function RegisterScreen(props) { |
|
|
automaticLogin(form); |
|
|
automaticLogin(form); |
|
|
break; |
|
|
break; |
|
|
default: |
|
|
default: |
|
|
setShowLog({show: true, message: "Um erro inesperado ocorreu. Tente novamente mais tarde"}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setShowLog({ |
|
|
|
|
|
show: true, |
|
|
|
|
|
message: "Um erro inesperado ocorreu. Tente novamente mais tarde", |
|
|
|
|
|
}); |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
const fieldsAreNotInUse = async (form, actions) => { |
|
|
const fieldsAreNotInUse = async (form, actions) => { |
|
|
var inUse = false; |
|
|
var inUse = false; |
|
|
const ru = await existUsername(form.number); |
|
|
const ru = await existUsername(form.number); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (ru.data) { |
|
|
if (ru.data) { |
|
|
actions.setFieldError("number", "Este número de telefone já está em uso"); |
|
|
actions.setFieldError("number", "Este número de telefone já está em uso"); |
|
|
inUse = false; |
|
|
inUse = false; |
|
@ -315,11 +355,18 @@ export default function RegisterScreen(props) { |
|
|
actions.setFieldError("name", "Este apelido de usuário já está em uso"); |
|
|
actions.setFieldError("name", "Este apelido de usuário já está em uso"); |
|
|
inUse = false; |
|
|
inUse = false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!ru.ok || !rn.ok) |
|
|
if (!ru.ok || !rn.ok) |
|
|
setShowLog({show: true, message: "Um erro inesperado ocorreu. Tente novamente mais tarde"}) |
|
|
|
|
|
|
|
|
setShowLog({ |
|
|
|
|
|
show: true, |
|
|
|
|
|
message: "Um erro inesperado ocorreu. Tente novamente mais tarde", |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
inUse && setShowLog({show: true, message: "Apelido de usuário ou telefone em uso"}) |
|
|
|
|
|
|
|
|
inUse && |
|
|
|
|
|
setShowLog({ |
|
|
|
|
|
show: true, |
|
|
|
|
|
message: "Apelido de usuário ou telefone em uso", |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
return !inUse; |
|
|
return !inUse; |
|
|
}; |
|
|
}; |
|
@ -330,7 +377,7 @@ export default function RegisterScreen(props) { |
|
|
show={showLog.show} |
|
|
show={showLog.show} |
|
|
description={showLog.message} |
|
|
description={showLog.message} |
|
|
confirmationLabel="OK" |
|
|
confirmationLabel="OK" |
|
|
onConfirm={() => setShowLog({...showLog, show:false})} |
|
|
|
|
|
|
|
|
onConfirm={() => setShowLog({ ...showLog, show: false })} |
|
|
/> |
|
|
/> |
|
|
<Form |
|
|
<Form |
|
|
initialValues={{ |
|
|
initialValues={{ |
|
@ -464,13 +511,7 @@ export default function RegisterScreen(props) { |
|
|
<Text style={styles.labelStyle}>Nome da instituição</Text> |
|
|
<Text style={styles.labelStyle}>Nome da instituição</Text> |
|
|
<View style={styles.iconField}> |
|
|
<View style={styles.iconField}> |
|
|
<MaterialCommunityIconsCustom name="bank" /> |
|
|
<MaterialCommunityIconsCustom name="bank" /> |
|
|
<FormField |
|
|
|
|
|
flex={1} |
|
|
|
|
|
maxLength={12} |
|
|
|
|
|
name="institutionName" |
|
|
|
|
|
placeholder="Digite o nome da instituição" |
|
|
|
|
|
paddingRight={2} |
|
|
|
|
|
/> |
|
|
|
|
|
|
|
|
<InstitutionNamePicker name="institutionName" /> |
|
|
</View> |
|
|
</View> |
|
|
<Text style={styles.labelStyle}>Vínculo institucional:</Text> |
|
|
<Text style={styles.labelStyle}>Vínculo institucional:</Text> |
|
|
<View style={[styles.iconField]}> |
|
|
<View style={[styles.iconField]}> |
|
|