class ImmichConnector { constructor(url, apiKey) { this.url = url this.apiKey = apiKey } fetchAlbums() { return this.fetch("/albums") } #fetch(endpoint) { return fetch(this.url + "/api" + endpoint, { headers: { "x-api-key": this.apiKey } }) } fetch(endpoint) { return this.#fetch(endpoint) .then(response => { if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`) return response.json() }) .then(data => { return data }) .catch(error => { console.error("Fetch error:", error) }) } fetchImageSrc(key, size) { const url = `/assets/${key}/thumbnail` + (this.size ? `?size=${this.size}` : "") return this.#fetch(url) .then(response => { if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`) return response.blob() }) .then(blob => { return URL.createObjectURL(blob) }) } } const immichConnector = new ImmichConnector("http://192.168.1.13", "m5nqOoBc4uhAba21gZdCP3z8D3JT4GPxDXL2psd52EA") document.immichConnector = immichConnector // FIXME TEMP export default immichConnector