41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
import { DocumentFormatter } from '../utils/document-formatter.js';
|
|
|
|
export class DirectusClient {
|
|
static API_BASE = 'https://api.ifuntanhub.dev';
|
|
|
|
static itemsUrl(collection) {
|
|
const params = new URLSearchParams({
|
|
limit: '-1',
|
|
fields: '*,file.id,file.filename_download,file.type,file.filename_disk',
|
|
});
|
|
|
|
return `${this.API_BASE}/items/${collection}?${params.toString()}`;
|
|
}
|
|
|
|
static fileId(file) {
|
|
return file && typeof file === 'object' ? file.id : file;
|
|
}
|
|
|
|
static assetUrl(file) {
|
|
return `${this.API_BASE}/assets/${this.fileId(file)}`;
|
|
}
|
|
|
|
static viewerUrl(item) {
|
|
const type = DocumentFormatter.fileInfoFromItem(item).type;
|
|
const params = new URLSearchParams({
|
|
id: this.fileId(item.file),
|
|
name: item.nama_berkas,
|
|
type,
|
|
});
|
|
return `viewer.html?${params.toString()}`;
|
|
}
|
|
|
|
static async fetchPublished(collection) {
|
|
const response = await fetch(this.itemsUrl(collection));
|
|
if (!response.ok) throw new Error(`Gagal memuat koleksi ${collection}.`);
|
|
const body = await response.json();
|
|
const items = body.data || [];
|
|
return items.filter(item => item.status === 'published');
|
|
}
|
|
}
|