Nós vamos começar colocando um parâmetro chamado de post, que será uma string. Pois dessa forma saberemos se é para postar o produto ou colocar como rascunho
const handleSubmitProduct = async (post: string) => {
Agora nós vamos colocar a verificação para saber se algum dos nossos campos está vazio. Se tiver, teremos um alert
if (
Object.values(fields).some((value) => !value) ||
!fields.images.length
) {
Alert.alert("Um dos seus campos não está preenchido");
return;
}
Precisamos de uma verificação adicional para as imagens, e saber se ela também está vazia
Iremos criar agora os parâmetros, enviando de forma separadas as imagens e o published
const params = {
...fields,
images: images.map(({ uri }) => ({
filename: uri.substring(uri.lastIndexOf("/") + 1),
uri,
url: "",
type: `image/${uri.split(".").slice(-1).toString()}`,
})),
published: post,
};
E nós vamos ver os status, que só existe o 201, que é o sucesso. E aí vamos redirecionar o usuário para a home
const { status } = await productService.addProduct(params);
if (status === 201) {
Alert.alert("Seu produto foi cadastrado com sucesso!");
navigation.navigate("Home");
}
Então podemos colocar nos botões as chamadas do handlesubmit
<DefaultButton
buttonText="CADASTRAR E PUBLICAR"
buttonHandle={() => {
handleSubmitProduct("true");
}}
buttonType="primary"
marginVertical={20}
/>
<Division>ou</Division>
<DefaultButton
buttonText="SALVAR COMO RASCUNHO"
buttonHandle={() => {
handleSubmitProduct("false");
}}
buttonType="secondary"
marginVertical={20}
/>