Nessa aula aqui nós vamos lá em context e vamos criar o login lá também, já que temos o registro já criado.
Vamos criar login e o logout que temos dentro do AuthContextData, junto ao registro
interface AuthContextData extends AuthState {
register: (
name: string,
email: string,
password: string,
phone: string
) => Promise<void>;
logout: () => void;
login: (email: string, password: string) => Promise<void>;
}
Nós vamos agora nos métodos para poder completar também os métodos de logout e de login, junto ao de registro
const methods = React.useMemo(
() => ({
logout: async () => {
dispatch({ type: "SIGN_OUT", token: null, user: null });
await SecureStore.deleteItemAsync("onebitshop-token");
await AsyncStorage.removeItem("user");
},
login: async (email: string, password: string) => {
const params = { email, password };
const { status, data } = await authService.login(params);
if (status === 400 || status === 401) {
return;
}
dispatch({
type: "SIGN_IN",
token: data.token,
user: data.user._id,
});
},
register: async (
name: string,
email: string,
password: string,
phone: string
) => {
const params = { name, email, password, phone };
const loginParams = { email, password };
const data = await authService.register(params);
if (data.status === 400) {
Alert.alert("Email já cadastrado.");
return;
}
dispatch({
type: "SIGN_IN",
token: data?.data.token,
user: data?.data.user._id,
});
await authService.login(loginParams);
},
}),
[]
);
Dessa forma criamos o método de login e também já fizemos o redirecionamento do usuário quando ele fizer o registro e a mesma coisa com o logout