feat(SPA): screens for Sites and Authors

This commit is contained in:
Florian Sylvain committed 2026-10-14 23:00:50 +02:00
1 parent b34a173d83
commit 3d81d2c717
82 files changed
+10676 -37

No files matched your search

+61
View File
@@ -0,0 +1,61 @@
import { useApi } from '@/composables/useApi'
import { jsonInit } from '@/lib/directoryRequest'
import { reassignQuery } from '@/lib/directory'
export type SiteRobots = 'index' | 'noindex'
export interface Site {
id: number
name: string
key: string
base_url: string
default_social_image_id: number | null
default_robots: SiteRobots
locale: string | null
is_default: boolean
article_count: number
}
export interface NewSite {
name: string
key: string
base_url: string
default_robots: SiteRobots
locale?: string
default_social_image_id?: number
is_default: boolean
}
export interface SitePatch {
name?: string
base_url?: string
default_robots?: SiteRobots
locale?: string | null
default_social_image_id?: number | null
}
export function useSites() {
const { request } = useApi()
function listSites(): Promise<Site[]> {
return request<Site[]>('/v1/site/')
}
function createSite(site: NewSite): Promise<Site> {
return request<Site>('/v1/site/', jsonInit('POST', site))
}
function updateSite(id: number, patch: SitePatch): Promise<Site> {
return request<Site>(`/v1/site/${id}`, jsonInit('PATCH', patch))
}
function setDefaultSite(id: number): Promise<Site> {
return request<Site>(`/v1/site/${id}/default`, { method: 'PATCH' })
}
function deleteSite(id: number, reassignTo?: number): Promise<void> {
return request<void>(`/v1/site/${id}${reassignQuery(reassignTo)}`, { method: 'DELETE' })
}
return { listSites, createSite, updateSite, setDefaultSite, deleteSite }
}