import { User, UserRole, UserProfile } from '../types'; import { api, setAuthToken, removeAuthToken } from './api'; export const getUsers = async (): Promise<{ success: boolean; users?: User[]; error?: string }> => { try { const res = await api.get('/auth/users'); return res; } catch (e) { return { success: false, error: 'Failed to fetch users' }; } }; export const login = async (email: string, password: string): Promise<{ success: boolean; user?: User; error?: string }> => { try { const res = await api.post('/auth/login', { email, password }); if (res.success) { setAuthToken(res.token); return { success: true, user: res.user }; } return { success: false, error: res.error }; } catch (e: any) { try { const err = JSON.parse(e.message); return { success: false, error: err.error || 'Login failed' }; } catch { return { success: false, error: 'Login failed' }; } } }; export const createUser = async (email: string, password: string): Promise<{ success: boolean; error?: string }> => { try { const res = await api.post('/auth/register', { email, password }); if (res.success) { setAuthToken(res.token); return { success: true }; } return { success: false, error: res.error }; } catch (e: any) { try { const err = JSON.parse(e.message); return { success: false, error: err.error || 'Registration failed' }; } catch { return { success: false, error: 'Registration failed' }; } } }; export const deleteUser = async (userId: string) => { try { const res = await api.delete(`/auth/users/${userId}`); return res; } catch (e) { return { success: false, error: 'Failed to delete user' }; } }; export const toggleBlockUser = async (userId: string, block: boolean) => { try { const res = await api.patch(`/auth/users/${userId}/block`, { block }); return res; } catch (e) { return { success: false, error: 'Failed to update user status' }; } }; export const adminResetPassword = (userId: string, newPass: string) => { // Admin only }; export const updateUserProfile = async (userId: string, profile: Partial): Promise<{ success: boolean; error?: string }> => { try { const res = await api.patch('/auth/profile', { userId, profile }); return res; } catch (e) { return { success: false, error: 'Failed to update profile' }; } }; export const changePassword = async (userId: string, newPassword: string) => { try { const res = await api.post('/auth/change-password', { userId, newPassword }); if (!res.success) { console.error('Failed to change password:', res.error); } return res; } catch (e) { console.error(e); return { success: false, error: 'Network error' }; } }; export const getCurrentUserProfile = (userId: string): UserProfile | undefined => { // This was synchronous. Now it needs to be async or fetched on load. // For now, we return undefined and let the app fetch it. return undefined; }; export const getMe = async (): Promise<{ success: boolean; user?: User; error?: string }> => { try { const res = await api.get('/auth/me'); return res; } catch (e) { return { success: false, error: 'Failed to fetch user' }; } };