import {Alert} from 'react-native'; import AsyncStorage from '@react-native-async-storage/async-storage'; import {NativeStackNavigationProp} from '@react-navigation/native-stack'; import {RootStackParam} from './RootStackParam'; // API 주소 const url = 'http://takensoftai.iptime.org:15857/auth'; // 회원가입 export const agreementAPI = async (agreementData: any) => { try { const response = await fetch(`${url}/register`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(agreementData), }); if (!response.ok) { throw new Error('Network response was not ok'); } const data = await response.json(); return data; } catch (error) { console.error('Register Error:', error); } }; // 로그인 export const useLoginAPI = ( navigation: NativeStackNavigationProp, ) => { const loginAPI = async (loginData: any) => { try { // console.log('data | ', loginData); const response = await fetch(`${url}/login`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(loginData), }); const data = await response.json(); console.log(`data : ${data}`); if (data.result === 'success') { console.log('login 성공'); // console.log('userInfo', userInfoData); // 로그인 성공 시 토큰 스토리지에 저장 AsyncStorage.setItem( 'token', JSON.stringify({ accessToken: data.token, }), ); navigation.reset({routes: [{name: 'SendLocation'}]}); } else { // 로그인 실패 시 처리 Alert.alert('로그인 정보를 다시 한 번 확인해주세요.'); } return data; } catch (error) { console.error('로그인 오류:', error); throw error; } }; return {loginAPI}; }; // 로컬 저장소에서 가져오기 export const getTokenFromStorage = async () => { try { const tokenString = await AsyncStorage.getItem('token'); if (tokenString) { const tokenObject = JSON.parse(tokenString); const accessToken = tokenObject.accessToken; // console.log(`accessToken: ${accessToken}`); return accessToken; } else { console.log('토큰이 AsyncStorage에 없습니다.'); return null; } } catch (error) { console.error('액세스 토큰 가져오는 중 오류 발생:', error); return null; } }; export const verifyTokens = async ( navigation: NativeStackNavigationProp, ) => { const token = await getTokenFromStorage(); // 토큰이 없는 경우 if (!token) { navigation.reset({routes: [{name: 'LoginScreen'}]}); } else { // 토큰이 있는 경우 navigation.reset({routes: [{name: 'SendLocation'}]}); } };