initial commit
This commit is contained in:
80
src/api/users.ts
Normal file
80
src/api/users.ts
Normal file
@@ -0,0 +1,80 @@
|
||||
import { authFetch } from './client';
|
||||
|
||||
// --- Auth Endpoints ---
|
||||
|
||||
export const loginWithPassword = async (mobile: string, password: string) => {
|
||||
const response = await authFetch('/api/users/login/', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ mobile, password })
|
||||
});
|
||||
if (!response.ok) throw new Error('Failed to login with password');
|
||||
return response.json();
|
||||
};
|
||||
|
||||
export const sendOtp = async (mobile: string, mode: string) => {
|
||||
const response = await authFetch('/api/users/otp/send/', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ mobile, mode })
|
||||
});
|
||||
if (!response.ok) throw new Error('Failed to send OTP');
|
||||
return response.json();
|
||||
};
|
||||
|
||||
export const loginWithOtp = async (mobile: string, otp: string) => {
|
||||
const response = await authFetch('/api/users/otp/login/', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ mobile, otp })
|
||||
});
|
||||
if (!response.ok) throw new Error('Failed to login with OTP');
|
||||
return response.json();
|
||||
};
|
||||
|
||||
export const logoutUser = async (refreshToken: string) => {
|
||||
const response = await authFetch('/api/users/logout/', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ refresh: refreshToken })
|
||||
});
|
||||
if (!response.ok) throw new Error("Logout failed");
|
||||
return response.json();
|
||||
};
|
||||
|
||||
// --- Profile Endpoints ---
|
||||
|
||||
export const getUserProfile = async () => {
|
||||
const response = await authFetch('/api/users/me/', {
|
||||
method: 'GET'
|
||||
});
|
||||
if (!response.ok) throw new Error('Failed to fetch profile');
|
||||
return response.json();
|
||||
};
|
||||
|
||||
export const updateUserProfile = async (data: Record<string, string>) => {
|
||||
const response = await authFetch('/api/users/me/', {
|
||||
method: 'PATCH',
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
if (!response.ok) throw new Error('Failed to update profile');
|
||||
return response.json();
|
||||
};
|
||||
|
||||
export const updateProfilePicture = async (file: File) => {
|
||||
const formData = new FormData();
|
||||
formData.append('profile_picture', file);
|
||||
|
||||
const response = await authFetch('/api/users/profile/picture/', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
});
|
||||
if (!response.ok) throw new Error('Failed to update profile picture');
|
||||
return response.json();
|
||||
};
|
||||
|
||||
export const removeProfilePicture = async () => {
|
||||
const formData = new FormData();
|
||||
formData.append('profile_picture', '');
|
||||
|
||||
return authFetch(`/api/users/profile/picture/`, {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user