diff --git a/packages/nc-gui/components/dashboard/TreeView.vue b/packages/nc-gui/components/dashboard/TreeView.vue index e67913d1af..b655cf8d03 100644 --- a/packages/nc-gui/components/dashboard/TreeView.vue +++ b/packages/nc-gui/components/dashboard/TreeView.vue @@ -407,6 +407,8 @@ const duplicateTable = async (table: TableType) => { await loadTables() } }) + + $e('a:table:duplicate') }, 'onUpdate:modelValue': closeDialog, }) @@ -762,7 +764,11 @@ const duplicateTable = async (table: TableType) => { - +
{{ $t('general.duplicate') }}
diff --git a/packages/nc-gui/components/dlg/ProjectDuplicate.vue b/packages/nc-gui/components/dlg/ProjectDuplicate.vue index 1b03e305c5..ca1fcc939a 100644 --- a/packages/nc-gui/components/dlg/ProjectDuplicate.vue +++ b/packages/nc-gui/components/dlg/ProjectDuplicate.vue @@ -33,8 +33,12 @@ const isLoading = ref(false) const _duplicate = async () => { isLoading.value = true - const jobData = await api.project.duplicate(props.project.id as string, optionsToExclude.value) - props.onOk(jobData as any) + try { + const jobData = await api.project.duplicate(props.project.id as string, optionsToExclude.value) + props.onOk(jobData as any) + } catch (e: any) { + message.error(await extractSdkResponseErrorMsg(e)) + } isLoading.value = false dialogShow.value = false } diff --git a/packages/nc-gui/components/dlg/TableDuplicate.vue b/packages/nc-gui/components/dlg/TableDuplicate.vue index ade5a2e7dc..ca3c6fc2fe 100644 --- a/packages/nc-gui/components/dlg/TableDuplicate.vue +++ b/packages/nc-gui/components/dlg/TableDuplicate.vue @@ -33,8 +33,12 @@ const isLoading = ref(false) const _duplicate = async () => { isLoading.value = true - const jobData = await api.dbTable.duplicate(props.table.project_id!, props.table.id!, optionsToExclude.value) - props.onOk(jobData as any) + try { + const jobData = await api.dbTable.duplicate(props.table.project_id!, props.table.id!, optionsToExclude.value) + props.onOk(jobData as any) + } catch (e: any) { + message.error(await extractSdkResponseErrorMsg(e)) + } isLoading.value = false dialogShow.value = false } diff --git a/packages/nc-gui/pages/index/index/index.vue b/packages/nc-gui/pages/index/index/index.vue index 7db1ecee35..0d035641db 100644 --- a/packages/nc-gui/pages/index/index/index.vue +++ b/packages/nc-gui/pages/index/index/index.vue @@ -89,22 +89,18 @@ const duplicateProject = (project: ProjectType) => { 'modelValue': isOpen, 'project': project, 'onOk': async (jobData: { name: string; id: string }) => { - try { - await loadProjects() - - $jobs.subscribe({ name: jobData.name, id: jobData.id }, undefined, async (status: string) => { - if (status === 'completed') { - await loadProjects() - } else if (status === 'failed') { - message.error('Failed to duplicate project') - await loadProjects() - } - }) - - $e('a:project:duplicate') - } catch (e: any) { - message.error(await extractSdkResponseErrorMsg(e)) - } + await loadProjects() + + $jobs.subscribe({ name: jobData.name, id: jobData.id }, undefined, async (status: string) => { + if (status === 'completed') { + await loadProjects() + } else if (status === 'failed') { + message.error('Failed to duplicate project') + await loadProjects() + } + }) + + $e('a:project:duplicate') }, 'onUpdate:modelValue': closeDialog, })