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;
}
