feat: 회원가입 api 연결 및 토큰 저장 후 Home 이동
This commit is contained in:
@@ -7,16 +7,18 @@ import React, {
|
||||
useMemo,
|
||||
useState,
|
||||
} from "react";
|
||||
import { loginApi } from "../api/auth";
|
||||
import { loginApi, signUpApi } from "../api/auth";
|
||||
|
||||
const ACCESS_TOKEN_KEY = "accessToken";
|
||||
const REFRESH_TOKEN_KEY = "refreshToken";
|
||||
|
||||
export type AuthContextValue = {
|
||||
accessToken: string | null;
|
||||
isAuthed: boolean;
|
||||
isHydrating: boolean; // 앱 시작 시 저장소에서 토큰 읽는 중인지
|
||||
isHydrating: boolean;
|
||||
signIn: (loginId: string, password: string) => Promise<void>;
|
||||
signOut: () => Promise<void>;
|
||||
signUp: (loginId: string, password: string) => Promise<void>;
|
||||
};
|
||||
|
||||
const AuthContext = createContext<AuthContextValue | null>(null);
|
||||
@@ -34,9 +36,10 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
|
||||
}, []);
|
||||
|
||||
const signIn = useCallback(async (loginId: string, password: string) => {
|
||||
const token = await loginApi({ loginId, password });
|
||||
setAccessToken(token);
|
||||
await AsyncStorage.setItem(ACCESS_TOKEN_KEY, token);
|
||||
const response = await loginApi({ loginId, password });
|
||||
setAccessToken(response.data.accessToken);
|
||||
await AsyncStorage.setItem(ACCESS_TOKEN_KEY, response.data.accessToken);
|
||||
await AsyncStorage.setItem(REFRESH_TOKEN_KEY, response.data.accessToken);
|
||||
}, []);
|
||||
|
||||
const signOut = useCallback(async () => {
|
||||
@@ -44,6 +47,13 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
|
||||
await AsyncStorage.removeItem(ACCESS_TOKEN_KEY);
|
||||
}, []);
|
||||
|
||||
const signUp = useCallback(async (loginId: string, password: string) => {
|
||||
const response = await signUpApi({ loginId, password });
|
||||
setAccessToken(response.data.accessToken);
|
||||
await AsyncStorage.setItem(ACCESS_TOKEN_KEY, response.data.accessToken);
|
||||
await AsyncStorage.setItem(REFRESH_TOKEN_KEY, response.data.accessToken);
|
||||
}, []);
|
||||
|
||||
const value = useMemo<AuthContextValue>(
|
||||
() => ({
|
||||
accessToken,
|
||||
@@ -51,6 +61,7 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
|
||||
isHydrating,
|
||||
signIn,
|
||||
signOut,
|
||||
signUp,
|
||||
}),
|
||||
[accessToken, isHydrating, signIn, signOut]
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user