116 lines
3.2 KiB
TypeScript
116 lines
3.2 KiB
TypeScript
import { ApplicationFull } from "@shared/types/application";
|
|
|
|
|
|
// @ts-ignore
|
|
const addr = import.meta.env.VITE_APIHOST;
|
|
|
|
export async function loadApplication(id: number | string, asAdmin: boolean = false): Promise<ApplicationFull | null> {
|
|
const res = await fetch(`${addr}/application/${id}?admin=${asAdmin}`, { credentials: 'include' })
|
|
if (res.status === 204) return null
|
|
if (!res.ok) throw new Error('Failed to load application')
|
|
const json = await res.json()
|
|
// Accept either the object at root or under `application`
|
|
return json;
|
|
}
|
|
|
|
export async function postApplication(val: any) {
|
|
|
|
let out = {
|
|
"App": val,
|
|
}
|
|
const res = await fetch(`${addr}/application`, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(out),
|
|
credentials: 'include',
|
|
})
|
|
return res;
|
|
}
|
|
|
|
export async function postChatMessage(message: any, post_id: number) {
|
|
|
|
const out = {
|
|
message: message
|
|
}
|
|
|
|
const response = await fetch(`${addr}/application/${post_id}/comment`, {
|
|
method: 'POST',
|
|
credentials: 'include',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(out),
|
|
})
|
|
|
|
return await response.json();
|
|
}
|
|
|
|
export async function postAdminChatMessage(message: any, post_id: number) {
|
|
const out = {
|
|
message: message
|
|
}
|
|
|
|
const response = await fetch(`${addr}/application/${post_id}/adminComment`, {
|
|
method: 'POST',
|
|
credentials: 'include',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(out),
|
|
})
|
|
|
|
return await response.json();
|
|
}
|
|
|
|
export async function getAllApplications(): Promise<ApplicationFull> {
|
|
const res = await fetch(`${addr}/application/all`)
|
|
|
|
if (res.ok) {
|
|
return res.json()
|
|
} else {
|
|
console.error("Something went wrong approving the application")
|
|
}
|
|
}
|
|
|
|
export async function loadMyApplications(): Promise<ApplicationFull> {
|
|
const res = await fetch(`${addr}/application/meList`, { credentials: 'include' })
|
|
|
|
if (res.ok) {
|
|
return res.json()
|
|
} else {
|
|
console.error("Something went wrong approving the application")
|
|
}
|
|
}
|
|
|
|
export async function getMyApplication(id: number): Promise<ApplicationFull> {
|
|
const res = await fetch(`${addr}/application/me/${id}`, { credentials: 'include' })
|
|
if (res.status === 204) return null
|
|
if (res.status === 403) throw new Error("Unauthorized");
|
|
if (!res.ok) throw new Error('Failed to load application')
|
|
const json = await res.json()
|
|
// Accept either the object at root or under `application`
|
|
return json;
|
|
}
|
|
|
|
export async function approveApplication(id: Number) {
|
|
const res = await fetch(`${addr}/application/approve/${id}`, { method: 'POST' })
|
|
|
|
if (!res.ok) {
|
|
console.error("Something went wrong approving the application")
|
|
}
|
|
}
|
|
|
|
export async function denyApplication(id: Number) {
|
|
const res = await fetch(`${addr}/application/deny/${id}`, { method: 'POST' })
|
|
|
|
if (!res.ok) {
|
|
console.error("Something went wrong denying the application")
|
|
}
|
|
}
|
|
|
|
export async function restartApplication() {
|
|
const res = await fetch(`${addr}/application/restart`, {
|
|
method: 'POST',
|
|
credentials: 'include'
|
|
})
|
|
|
|
if (!res.ok) {
|
|
console.error("Something went wrong restarting your application")
|
|
}
|
|
} |