Commit 0712ec8f authored by Lorenzo Trujillo Rojas's avatar Lorenzo Trujillo Rojas
Browse files

Se creo un hook que maneja el cambio de contraseña de un usuario

parent 4ada3d1c
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
import { useState } from "react";
import { useForm } from "react-hook-form"
import { ApiRequestStatus } from "../../common/constants/api_request_states";
import { useDataContext } from "../../common/contexts/data_context";
import { router } from "expo-router";

interface ChangePasswordValues {
    oldPassword: string;
    newPassword: string;
    confirmPassword: string;
}

export const useChangePassword = () => {
    const { control, handleSubmit, setError } = useForm<ChangePasswordValues>();
    const [status, setStatus] = useState<ApiRequestStatus>(ApiRequestStatus.IDLE);
    const { profileRepository } = useDataContext();

    const setLoading = async () => {
        setStatus(ApiRequestStatus.LOADING);
    }

    const request = async (values: ChangePasswordValues) => {
        await setLoading();
        try {
            await profileRepository!.changePassword(values.oldPassword, values.newPassword);
            setStatus(ApiRequestStatus.SUCCESS);
            router.back();
        } catch (error) {
            setError("oldPassword", { type: "manual", message: "The current password is incorrect" });
            setStatus(ApiRequestStatus.ERROR);
        }
    }

    const onSubmit = async () => {
        await handleSubmit(async (data) => {
            await request(data);
        })();
    }
    return { control, onSubmit, status };
}
 No newline at end of file