47 lines
1.3 KiB
JavaScript
47 lines
1.3 KiB
JavaScript
const API_BASE = window?.ENV?.API_BASE || "";
|
|
|
|
export async function fetchSections() {
|
|
const res = await fetch(`${API_BASE}/apps`);
|
|
if (!res.ok) throw new Error('Failed to fetch sections');
|
|
return res.json();
|
|
}
|
|
|
|
export async function addAppToSection({ section, app }) {
|
|
const res = await fetch(`${API_BASE}/add_app`, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ section, app })
|
|
});
|
|
if (!res.ok) throw new Error(await res.text());
|
|
return res.json();
|
|
}
|
|
|
|
export async function getIconUrl(filename) {
|
|
const res = await fetch(`${API_BASE}/icon/${filename}`);
|
|
if (!res.ok) throw new Error(`Failed to fetch icon for ${filename}`);
|
|
const data = await res.json();
|
|
return data.url;
|
|
}
|
|
|
|
export async function editAppInSection({ section, app }) {
|
|
const res = await fetch(`${API_BASE}/edit_app`, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ section, app })
|
|
});
|
|
|
|
if (!res.ok) throw new Error(await res.text());
|
|
return await res.json();
|
|
}
|
|
|
|
export async function deleteAppFromSection({ section, app }) {
|
|
const res = await fetch(`${API_BASE}/delete_app`, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ section, app })
|
|
});
|
|
|
|
if (!res.ok) throw new Error(await res.text());
|
|
return res.json();
|
|
}
|