All checks were successful
Auto Tag Develop / tag (push) Successful in 8s
- Backend: MaintenanceModeListener blocks non-admin API requests when var/maintenance flag file exists. MaintenanceController provides toggle (PUT /api/admin/maintenance) and public check endpoint (GET /api/maintenance/check). - Frontend: Toggle button in admin page, maintenance.vue page for blocked users, middleware redirects non-admins to /maintenance. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
31 lines
859 B
TypeScript
31 lines
859 B
TypeScript
import { ref } from 'vue'
|
|
import { useApi } from './useApi'
|
|
|
|
const maintenanceEnabled = ref(false)
|
|
|
|
export function useMaintenance() {
|
|
const { apiCall } = useApi()
|
|
const loading = ref(false)
|
|
|
|
const fetchStatus = async () => {
|
|
const res = await apiCall<{ enabled: boolean }>('/admin/maintenance')
|
|
if (res.success && res.data) {
|
|
maintenanceEnabled.value = res.data.enabled
|
|
}
|
|
}
|
|
|
|
const toggle = async () => {
|
|
loading.value = true
|
|
try {
|
|
const res = await apiCall<{ enabled: boolean }>('/admin/maintenance', { method: 'PUT' })
|
|
if (res.success && res.data) {
|
|
maintenanceEnabled.value = res.data.enabled
|
|
}
|
|
} finally {
|
|
loading.value = false
|
|
}
|
|
}
|
|
|
|
return { maintenanceEnabled, loading, fetchStatus, toggle }
|
|
}
|