feat: Implement prepare-and-create endpoint for voice design creation and update related API and frontend logic
This commit is contained in:
@@ -145,28 +145,27 @@ const VoiceDesignForm = forwardRef<VoiceDesignFormHandle>((_props, ref) => {
|
||||
return
|
||||
}
|
||||
|
||||
const backend = preferences?.default_backend || 'local'
|
||||
const text = watch('text')
|
||||
const designData = {
|
||||
name: saveDesignName,
|
||||
instruct: instruct,
|
||||
backend_type: backend,
|
||||
preview_text: text || `${saveDesignName}的声音`
|
||||
}
|
||||
|
||||
try {
|
||||
const backend = preferences?.default_backend || 'local'
|
||||
const text = watch('text')
|
||||
const design = await voiceDesignApi.create({
|
||||
name: saveDesignName,
|
||||
instruct: instruct,
|
||||
backend_type: backend,
|
||||
preview_text: text || `${saveDesignName}的声音`
|
||||
})
|
||||
|
||||
toast.success(t('designSaved'))
|
||||
|
||||
if (backend === 'local') {
|
||||
setIsPreparing(true)
|
||||
try {
|
||||
await voiceDesignApi.prepareClone(design.id)
|
||||
toast.success(t('clonePrepared'))
|
||||
} catch (error) {
|
||||
toast.error(t('clonePrepareFailed'))
|
||||
await voiceDesignApi.prepareAndCreate(designData)
|
||||
toast.success(t('designSaved'))
|
||||
} finally {
|
||||
setIsPreparing(false)
|
||||
}
|
||||
} else {
|
||||
await voiceDesignApi.create(designData)
|
||||
toast.success(t('designSaved'))
|
||||
}
|
||||
|
||||
setShowSaveDialog(false)
|
||||
|
||||
@@ -432,6 +432,14 @@ export const voiceDesignApi = {
|
||||
return response.data
|
||||
},
|
||||
|
||||
prepareAndCreate: async (data: VoiceDesignCreate): Promise<VoiceDesign> => {
|
||||
const response = await apiClient.post<VoiceDesign>(
|
||||
API_ENDPOINTS.VOICE_DESIGNS.PREPARE_AND_CREATE,
|
||||
data
|
||||
)
|
||||
return response.data
|
||||
},
|
||||
|
||||
prepareClone: async (id: number): Promise<{ message: string; cache_id: number; ref_text: string }> => {
|
||||
const response = await apiClient.post<{ message: string; cache_id: number; ref_text: string }>(
|
||||
API_ENDPOINTS.VOICE_DESIGNS.PREPARE_CLONE(id)
|
||||
|
||||
@@ -30,6 +30,7 @@ export const API_ENDPOINTS = {
|
||||
VOICE_DESIGNS: {
|
||||
LIST: '/voice-designs',
|
||||
CREATE: '/voice-designs',
|
||||
PREPARE_AND_CREATE: '/voice-designs/prepare-and-create',
|
||||
PREPARE_CLONE: (id: number) => `/voice-designs/${id}/prepare-clone`,
|
||||
},
|
||||
} as const
|
||||
|
||||
Reference in New Issue
Block a user