From b6db2df5a4c630e0e28897e4a55544dfd6bf1dd5 Mon Sep 17 00:00:00 2001 From: mertmit Date: Sat, 30 Sep 2023 17:01:46 +0000 Subject: [PATCH] feat: sync metadata front end --- .../dashboard/settings/Metadata.vue | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/packages/nc-gui/components/dashboard/settings/Metadata.vue b/packages/nc-gui/components/dashboard/settings/Metadata.vue index 98d15f5e8d..35e9d63d06 100644 --- a/packages/nc-gui/components/dashboard/settings/Metadata.vue +++ b/packages/nc-gui/components/dashboard/settings/Metadata.vue @@ -41,21 +41,30 @@ async function loadMetaDiff() { } } +const { $jobs } = useNuxtApp() + async function syncMetaDiff() { try { if (!project.value?.id || !isDifferent.value) return isLoading.value = true - await $api.base.metaDiffSync(project.value?.id, props.baseId) - // Table metadata recreated successfully - message.info(t('msg.info.metaDataRecreated')) - await loadTables() - await loadMetaDiff() - emit('baseSynced') + const jobData = await $api.base.metaDiffSync(project.value?.id, props.baseId) + + $jobs.subscribe({ id: jobData.id }, undefined, async (status: string) => { + if (status === JobStatus.COMPLETED) { + // Table metadata recreated successfully + message.info(t('msg.info.metaDataRecreated')) + await loadTables() + await loadMetaDiff() + emit('baseSynced') + isLoading.value = false + } else if (status === JobStatus.FAILED) { + message.error('Failed to sync base metadata') + isLoading.value = false + } + }) } catch (e: any) { message.error(await extractSdkResponseErrorMsg(e)) - } finally { - isLoading.value = false } }