76 lines
1.9 KiB
TypeScript
76 lines
1.9 KiB
TypeScript
import type { PageLayout, CreatePageLayoutRequest, UpdatePageLayoutRequest } from '~/types/page-layout'
|
|
|
|
export const usePageLayouts = () => {
|
|
const { api } = useApi()
|
|
|
|
const getPageLayouts = async (objectId?: string) => {
|
|
try {
|
|
const params = objectId ? { objectId } : {}
|
|
const response = await api.get('/page-layouts', { params })
|
|
return response
|
|
} catch (error) {
|
|
console.error('Error fetching page layouts:', error)
|
|
throw error
|
|
}
|
|
}
|
|
|
|
const getPageLayout = async (id: string) => {
|
|
try {
|
|
const response = await api.get(`/page-layouts/${id}`)
|
|
return response
|
|
} catch (error) {
|
|
console.error('Error fetching page layout:', error)
|
|
throw error
|
|
}
|
|
}
|
|
|
|
const getDefaultPageLayout = async (objectId: string) => {
|
|
try {
|
|
const response = await api.get(`/page-layouts/default/${objectId}`)
|
|
return response
|
|
} catch (error) {
|
|
console.error('Error fetching default page layout:', error)
|
|
return null
|
|
}
|
|
}
|
|
|
|
const createPageLayout = async (data: CreatePageLayoutRequest) => {
|
|
try {
|
|
const response = await api.post('/page-layouts', data)
|
|
return response
|
|
} catch (error) {
|
|
console.error('Error creating page layout:', error)
|
|
throw error
|
|
}
|
|
}
|
|
|
|
const updatePageLayout = async (id: string, data: UpdatePageLayoutRequest) => {
|
|
try {
|
|
const response = await api.patch(`/page-layouts/${id}`, data)
|
|
return response
|
|
} catch (error) {
|
|
console.error('Error updating page layout:', error)
|
|
throw error
|
|
}
|
|
}
|
|
|
|
const deletePageLayout = async (id: string) => {
|
|
try {
|
|
const response = await api.delete(`/page-layouts/${id}`)
|
|
return response
|
|
} catch (error) {
|
|
console.error('Error deleting page layout:', error)
|
|
throw error
|
|
}
|
|
}
|
|
|
|
return {
|
|
getPageLayouts,
|
|
getPageLayout,
|
|
getDefaultPageLayout,
|
|
createPageLayout,
|
|
updatePageLayout,
|
|
deletePageLayout,
|
|
}
|
|
}
|