40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
/**
|
||
* 素材库 API
|
||
*/
|
||
import apiClient from "../client"
|
||
import { getOrCreateDefaultProject } from "../projects"
|
||
import type { AssetLibraryItem } from "./types"
|
||
|
||
/** 获取当前用户的所有素材库 */
|
||
export const getAssetLibraries = async (): Promise<AssetLibraryItem[]> => {
|
||
const response = await apiClient.get("/asset-libraries")
|
||
return response.data.items || []
|
||
}
|
||
|
||
/** 创建素材库(自动获取或创建默认项目以提供 project_id) */
|
||
export const createAssetLibrary = async (data: {
|
||
name: string
|
||
kind: "video" | "voice" | "image"
|
||
}): Promise<AssetLibraryItem> => {
|
||
const project = await getOrCreateDefaultProject()
|
||
const response = await apiClient.post("/asset-libraries", {
|
||
project_id: project.id,
|
||
...data,
|
||
})
|
||
return response.data
|
||
}
|
||
|
||
/** 确保项目下指定 kind 的默认素材库存在 */
|
||
export const ensureDefaultLibrary = async (data: {
|
||
project_id: string
|
||
kind: "video" | "voice" | "image"
|
||
}): Promise<AssetLibraryItem> => {
|
||
const response = await apiClient.post("/asset-libraries/ensure-default", data)
|
||
return response.data
|
||
}
|
||
|
||
/** 删除素材库 */
|
||
export const deleteAssetLibrary = async (libraryId: string): Promise<void> => {
|
||
await apiClient.delete(`/asset-libraries/${libraryId}`)
|
||
}
|