57 lines
1.8 KiB
JavaScript
57 lines
1.8 KiB
JavaScript
import { account } from './appwrite'
|
|
|
|
const PROJECT_ADMIN_URL =
|
|
import.meta.env.VITE_PROJECT_ADMIN_URL || 'https://project.webklar.com'
|
|
|
|
// Wie kindsFetch in projectKindsApi.js: der Fehler trägt .status und .data
|
|
// (z. B. 409 { error: 'Preview-Runner ist nicht aktiv' }, 503 bei Überlast).
|
|
async function previewFetch(path, options = {}) {
|
|
const jwt = await account.createJWT()
|
|
const response = await fetch(`${PROJECT_ADMIN_URL}${path}`, {
|
|
...options,
|
|
headers: {
|
|
Authorization: `Bearer ${jwt.jwt}`,
|
|
'Content-Type': 'application/json',
|
|
...options.headers,
|
|
},
|
|
})
|
|
const data = await response.json().catch(() => ({}))
|
|
if (!response.ok) {
|
|
const error = new Error(data.error || `API-Fehler ${response.status}`)
|
|
error.status = response.status
|
|
error.data = data
|
|
throw error
|
|
}
|
|
return data
|
|
}
|
|
|
|
const base = (projectId) => `/api/admin/website-projects/${encodeURIComponent(projectId)}/preview`
|
|
|
|
export function fetchPreview(projectId) {
|
|
return previewFetch(base(projectId))
|
|
}
|
|
|
|
export function setPreviewMode(projectId, mode) {
|
|
return previewFetch(base(projectId), { method: 'PATCH', body: JSON.stringify({ mode }) })
|
|
}
|
|
|
|
export function savePreviewEnv(projectId, { set = {}, remove = [] } = {}) {
|
|
return previewFetch(`${base(projectId)}/env`, { method: 'PUT', body: JSON.stringify({ set, remove }) })
|
|
}
|
|
|
|
export function rebuildPreview(projectId) {
|
|
return previewFetch(`${base(projectId)}/rebuild`, { method: 'POST' })
|
|
}
|
|
|
|
export function startPreviewDev(projectId) {
|
|
return previewFetch(`${base(projectId)}/dev/start`, { method: 'POST' })
|
|
}
|
|
|
|
export function stopPreviewDev(projectId) {
|
|
return previewFetch(`${base(projectId)}/dev/stop`, { method: 'POST' })
|
|
}
|
|
|
|
export function fetchPreviewLog(projectId, runFile) {
|
|
return previewFetch(`${base(projectId)}/logs/${encodeURIComponent(runFile)}`)
|
|
}
|