File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
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<RootStackParam>,
) => {
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<RootStackParam>,
) => {
const token = await getTokenFromStorage();
// 토큰이 없는 경우
if (!token) {
navigation.reset({routes: [{name: 'LoginScreen'}]});
} else {
// 토큰이 있는 경우
navigation.reset({routes: [{name: 'SendLocation'}]});
}
};