44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import api from './api';
|
|
import * as SecureStore from 'expo-secure-store';
|
|
import { AuthResponse, User } from '../types';
|
|
|
|
export async function login(username: string, password: string): Promise<AuthResponse> {
|
|
const response = await api.post('/auth/login', { username, password });
|
|
const { user, token } = response.data;
|
|
|
|
await SecureStore.setItemAsync('auth_token', token);
|
|
await SecureStore.setItemAsync('user', JSON.stringify(user));
|
|
|
|
return response.data;
|
|
}
|
|
|
|
export async function logout(): Promise<void> {
|
|
await api.post('/auth/logout');
|
|
await SecureStore.deleteItemAsync('auth_token');
|
|
await SecureStore.deleteItemAsync('user');
|
|
}
|
|
|
|
export async function checkAuth(): Promise<User | null> {
|
|
try {
|
|
const response = await api.get('/auth/check');
|
|
return response.data.user;
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
export async function getStoredUser(): Promise<User | null> {
|
|
const userStr = await SecureStore.getItemAsync('user');
|
|
return userStr ? JSON.parse(userStr) : null;
|
|
}
|
|
|
|
export async function register(username: string, password: string): Promise<AuthResponse> {
|
|
const response = await api.post('/auth/register', { username, password });
|
|
const { user, token } = response.data;
|
|
|
|
await SecureStore.setItemAsync('auth_token', token);
|
|
await SecureStore.setItemAsync('user', JSON.stringify(user));
|
|
|
|
return response.data;
|
|
}
|