1. Agora iremos fazer a conexão e o registro de fato

  2. Primeiro vamos criar os fields, que serão os campos que usaremos para manipular e conseguir enviar para o registro, e aí vamos mandar tanto os fields quando os setsFields para o form que temos

    const [fields, setFields] = useState({
      name: "",
      email: "",
      password: "",
      phone: "",
      confirmPassword: "",
    });
    
    <Form fields={fields} setFields={setFields} />
    
  3. Iremos então receber o fields e o setFields dentro de Form (dentro de register que está em components)

    interface Fields {
      name: string;
      email: string;
      password: string;
      phone: string;
      confirmPassword: string;
    }
    
    interface Props {
      fields: Fields;
      setFields: React.Dispatch<SetStateAction<Fields>>;
    }
    
    const Form = ({ fields, setFields }: Props) => {
    
  4. Podemos agora colocar em todos os placeholder o value e o onChangeText, que será dessa forma que iremos pegar as informações dos inputs

    <>
      <InputContainer>
        <Input
          placeholder="Nome e sobrenome"
          value={fields.name}
          onChangeText={(val) => {
            setFields({
              ...fields,
              name: val,
            });
          }}
          placeholderTextColor="#C0C0C1"
        />
      </InputContainer>
      <InputContainer>
        <Input
          placeholder="Email"
          value={fields.email}
          onChangeText={(val) => {
            setFields({
              ...fields,
              email: val,
            });
          }}
          placeholderTextColor="#C0C0C1"
        />
      </InputContainer>
      <InputContainer>
        <InputMask
          type="cel-phone"
          options={{
            maskType: "BRL",
            withDDD: true,
            dddMask: "(99) ",
          }}
          value={fields.phone}
          onChangeText={(val) => {
            setFields({
              ...fields,
              phone: val,
            });
          }}
          placeholder="(XX) XXXXX-XXXX"
          placeholderTextColor="#C0C0C1"
        />
      </InputContainer>
      <InputContainer>
        <Input
          placeholder="Senha"
          value={fields.password}
          onChangeText={(val) => {
            setFields({
              ...fields,
              password: val,
            });
          }}
          placeholderTextColor="#C0C0C1"
          secureTextEntry
        />
      </InputContainer>
      <InputContainer>
        <Input
          placeholder="Confirmação de senha"
          value={fields.confirmPassword}
          onChangeText={(val) => {
            setFields({
              ...fields,
              confirmPassword: val,
            });
          }}
          placeholderTextColor="#C0C0C1"
          secureTextEntry
        />
      </InputContainer>
    </>
    
  5. E se dermos um console.log nos fields e formos digitar, vamos ver que estamos com os campos sendo atualizados de acordo com o que a gente precisa.

  6. Agora iresmo criar o handle para registrarmos o usuário.

    const { register } = useAuth();
    
    const handleRegister = async () => {
      if (fields.password.length < 4) {
        Alert.alert("Sua senha precisa ter mais de 4 caracteres");
    
        return;
      } else if (fields.password !== fields.confirmPassword) {
        Alert.alert(
          "Sua senha e a confirmação estão diferentes, por favor, coloque igual."
        );
    
        return;
      }
    
      register(fields.name, fields.email, fields.password, fields.phone);
    
      Alert.alert("Registro feito com sucesso!");
    };
    
  7. Nesse nosso caso ainda não teremos navegação, pois será feita no nosso contexto junto com o login, então iremos ter apenas o alert por enquanto.

  8. Iremos com esse handle pronto colocar no botão

    <DefaultButton
      buttonText="FAZER REGISTRO"
      buttonHandle={handleRegister}
      buttonType="primary"
      marginVertical={30}
    />
    
  9. Agora a gente pode fazer o registro em si, podemos colocar as informações completas aqui que quisermos.

  10. E também podemos testar os erros que temos organizados aqui, de senha, confirmação, email, etc… E aí no fim a gente qnd receber o alert de bem sucedido, poderemos ver dentro do mongo que a gente agora tem um usuário criado aqui na coleção