This repository has been archived on 2024-12-15. You can view files and clone it, but cannot push or open issues or pull requests.
seepur/resources/scripts/applications/services/api.service.ts

146 lines
3.5 KiB
TypeScript

export default class ApiService {
static async getUser(userId?: number) {
try {
return (await fetch('/api/v1/client/user/')).json();
} catch (e) {
console.error(`getUser ERROR: ${e.message}`);
return e;
}
}
static async getAllUsers() {
try {
return (await fetch('/api/v1/admin/users')).json();
} catch (e) {
console.error(`getAllUsers ERROR: ${e.message}`);
return e;
}
}
static async uploadBook(payload: { title: string, author: string, pages: string[], ltr: boolean }) {
// console.log(payload);
// return { code: 0 }
const options = {
method: 'POST',
body: JSON.stringify(payload),
headers: {
'Content-Type': 'application/json'
}
}
try {
return (await fetch('/api/v1/client/book/create', options)).json();
} catch (e) {
console.error(`uploadBook ERROR: ${e.message}`);
throw e;
}
}
static async updateUser(payload: { name?: string; avatar?: string; profile_cover?: string; email?: string }) {
const options = {
method: 'PUT',
body: JSON.stringify(payload),
headers: {
'Content-Type': 'application/json'
}
}
try {
return (await fetch('/api/v1/client/user/', options)).json();
} catch (e) {
console.error(`updateUser ERROR: ${e.message}`);
return e;
}
}
static async getChild(id: number): Promise<IApiResponse> {
try {
return (await fetch(`/api/v1/client/child/${id}`)).json();
} catch (e) {
console.error(`getChild ERROR: ${e.message}`);
return e;
}
}
static async createConnection(payload: { child_id: number, email: string, is_parent: boolean }) {
const options = {
method: 'POST',
body: JSON.stringify(payload),
headers: {
'Content-Type': 'application/json'
}
}
try {
return (await fetch('/api/v1/client/connections/create', options)).json();
} catch (e) {
console.error(`createConnection ERROR: ${e.message}`);
return e;
}
}
static async updateChild(child_id: number, data: any) {
const options = {
method: 'POST',
body: JSON.stringify(data),
headers: {
'Content-Type': 'application/json'
}
};
try {
const response = await fetch(`/api/v1/client/child/${child_id}`, options);
console.log(response);
return response.json();
} catch (e) {
console.error(`updateChildCover ERROR: ${e.message}`);
return false;
}
};
static async createCall(payload: { connection_id: number, child_id: number }) {
const options = {
method: 'POST',
body: JSON.stringify(payload),
headers: {
'Content-Type': 'application/json'
}
};
try {
const response = await fetch('/api/v1/client/call/create', options);
return response.json();
} catch (e) {
console.error(`createCall ERROR: ${e.message}`);
return false;
}
}
static async createChild(name: string, dob: Date, avatar: string): Promise<any> {
const options = {
method: 'POST',
body: JSON.stringify({
name,
dob,
avatar
}),
headers: {
'Content-Type': 'application/json'
}
};
try {
const response = await fetch('/api/v1/client/child/', options);
return response.json();
} catch (e) {
console.error(`createChild ERROR: ${e.message}`);
return false;
}
}
}
interface IApiResponse {
code: number;
data?: any;
message?: string;
}