Add asset import/export and local dev server setup
CI/CD Pipeline / deploy (push) Successful in 38s
CI/CD Pipeline / promote_stable (push) Successful in 2s

- Configure Vite dev server with localhost binding and public asset proxy
- Add npm scripts for concurrent Laravel/Vite development (dev:local, dev:test)
- Implement asset import/export in ACP via ZIP file upload/download
- Create AssetController for asset management endpoints
- Add asset management UI tab in admin panel
This commit is contained in:
2026-05-16 16:33:22 +02:00
parent a2fe31925f
commit d4d7934c89
7 changed files with 280 additions and 0 deletions
+42
View File
@@ -536,3 +536,45 @@ export async function createPost({ body, threadId }) {
}),
})
}
export async function exportAssets() {
const token = localStorage.getItem('speedbb_token')
const headers = {
Accept: 'application/json',
}
if (token) {
headers.Authorization = `Bearer ${token}`
}
const response = await fetch(`${API_BASE}/assets/export`, {
headers,
})
if (response.status === 401) {
localStorage.removeItem('speedbb_token')
localStorage.removeItem('speedbb_email')
localStorage.removeItem('speedbb_user_id')
localStorage.removeItem('speedbb_roles')
window.dispatchEvent(new Event('speedbb-unauthorized'))
throw new Error('Unauthorized')
}
if (!response.ok) {
throw new Error(response.statusText)
}
const blob = await response.blob()
const url = window.URL.createObjectURL(blob)
const a = document.createElement('a')
a.href = url
a.download = `assets-${new Date().toISOString().slice(0, 10)}.zip`
document.body.appendChild(a)
a.click()
window.URL.revokeObjectURL(url)
document.body.removeChild(a)
}
export async function importAssets(file) {
const formData = new FormData()
formData.append('file', file)
return apiFetch('/assets/import', {
method: 'POST',
body: formData,
})
}