64 lines
2.3 KiB
TypeScript
64 lines
2.3 KiB
TypeScript
import { request } from '@/utils/request'
|
|
import { unwrapApiResponse, unwrapNullableApiResponse, isSuccessCode } from '@/utils/api-response'
|
|
import type { ApiResponse } from '@/types/common'
|
|
import type { DocumentFont } from '../../../../packages/document-fonts'
|
|
export type { DocumentFont } from '../../../../packages/document-fonts'
|
|
export interface FontRecord extends DocumentFont {
|
|
enabled: boolean
|
|
createdAt: string
|
|
}
|
|
export interface FontNodeCheck {
|
|
fontId: string
|
|
node: string
|
|
available: boolean
|
|
message: string
|
|
checkedAt: string
|
|
}
|
|
export interface FontSettings {
|
|
nodes: FontNodeCheck[]
|
|
defaultFontId: string | null
|
|
fonts: FontRecord[]
|
|
legacyFileReadable: boolean
|
|
}
|
|
export interface FontFaceInfo {
|
|
index: number
|
|
name: string
|
|
style: string
|
|
}
|
|
export interface FontCheck {
|
|
available: boolean
|
|
message: string
|
|
node: string
|
|
checkedAt: string
|
|
}
|
|
const base = '/v1/document-fonts'
|
|
const longRequest = { timeout: 90000 }
|
|
export const getDocumentFontSettings = () =>
|
|
request.get<ApiResponse<FontSettings>>(base).then(unwrapApiResponse)
|
|
export const getDefaultDocumentFont = () =>
|
|
request.get<ApiResponse<DocumentFont | null>>(`${base}/current`).then(unwrapNullableApiResponse)
|
|
export const inspectDocumentFont = (file: File) => {
|
|
const form = new FormData()
|
|
form.append('file', file)
|
|
return request
|
|
.post<ApiResponse<FontFaceInfo[]>>(`${base}/inspect`, form, longRequest)
|
|
.then(unwrapApiResponse)
|
|
}
|
|
export const uploadDocumentFont = (form: FormData) =>
|
|
request.post<ApiResponse<FontRecord>>(base, form, longRequest).then(unwrapApiResponse)
|
|
export const checkDocumentFont = (id: string) =>
|
|
request
|
|
.post<ApiResponse<FontCheck>>(`${base}/${id}/check`, undefined, longRequest)
|
|
.then(unwrapApiResponse)
|
|
export const previewDocumentFont = (id: string) =>
|
|
request.get<Blob>(`${base}/${id}/preview`, { ...longRequest, responseType: 'blob' })
|
|
function requireSuccess(response: ApiResponse<unknown>) {
|
|
if (!isSuccessCode(response.code)) throw new Error(response.message || '设置失败')
|
|
}
|
|
export const activateDocumentFont = (id: string) =>
|
|
request
|
|
.put<ApiResponse<unknown>>(`${base}/${id}/default`, undefined, longRequest)
|
|
.then(requireSuccess)
|
|
export const setDocumentFontEnabled = (id: string, enabled: boolean) =>
|
|
request.put<ApiResponse<unknown>>(`${base}/${id}/status`, { enabled }).then(requireSuccess)
|