feat: implement API composables for authentication and data fetching

- Add useApiFetch composable for HTTP requests with auth token
- Implement useAuth composable for authentication endpoints
- Add useAdmin composable for admin operations
- Add useOperator composable for operator management
- Add useMembers composable for member data
- Add usePublic composable for public reports
- Add useReports composable for report operations

Co-authored-by: Copilot <[email protected]>
This commit is contained in:
2026-06-07 20:01:59 +02:00
co-authored by Copilot
Unverified
parent f6229b31bf
commit f54495f25d
7 changed files with 249 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
import type {
AssignTeamRequest,
InterventionSummaryResponse,
OkResponse,
PagedReportListResponse,
UpdateStatusRequest
} from "~/types/api";
export const useOperator = () => {
const getOpenReports = (query?: { page?: number; per_page?: number }) =>
useApiFetch<PagedReportListResponse>('/api/v1/operator/reports/open', { method: 'GET', query })
const getAssignedReports = (query?: { page?: number; per_page?: number }) =>
useApiFetch<PagedReportListResponse>('/api/v1/operator/reports/assigned', { method: 'GET', query })
const getOtherOperatorReports = (query?: { page?: number; per_page?: number }) =>
useApiFetch<PagedReportListResponse>('/api/v1/operator/reports/others', { method: 'GET', query })
const takeReport = (id: number) =>
useApiFetch<OkResponse>(`/api/v1/reports/${id}/take`, { method: 'POST' })
const updateReportStatus = (id: number, body: UpdateStatusRequest) =>
useApiFetch<OkResponse>(`/api/v1/reports/${id}/status`, { method: 'PATCH', body })
const assignTeam = (id: number, body: AssignTeamRequest) =>
useApiFetch<OkResponse>(`/api/v1/reports/${id}/assignments`, { method: 'POST', body })
const getInterventionSummary = (id: number) =>
useApiFetch<InterventionSummaryResponse>(`/api/v1/reports/${id}/intervention-summary`, { method: 'GET' })
return {
getOpenReports,
getAssignedReports,
getOtherOperatorReports,
takeReport,
updateReportStatus,
assignTeam,
getInterventionSummary,
}
}