From b9a33c9694951efc73220b0102193672fcc6125d Mon Sep 17 00:00:00 2001 From: Pranav C Date: Mon, 12 Jun 2023 12:18:25 +0530 Subject: [PATCH 1/2] fix: save any unsaved data on tab close/view switch/table switch/data reload Signed-off-by: Pranav C --- .../nc-gui/components/smartsheet/Grid.vue | 23 +++++++++++++++---- packages/nc-gui/composables/useViewData.ts | 1 + 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/Grid.vue b/packages/nc-gui/components/smartsheet/Grid.vue index c9b81b0e1e..233a69230b 100644 --- a/packages/nc-gui/components/smartsheet/Grid.vue +++ b/packages/nc-gui/components/smartsheet/Grid.vue @@ -677,9 +677,9 @@ const saveOrUpdateRecords = async (args: { metaValue?: TableType; viewMetaValue? index++ /** if new record save row and save the LTAR cells */ if (currentRow.rowMeta.new) { - const syncLTARRefs = rowRefs[index]!.syncLTARRefs + const syncLTARRefs = rowRefs?.[index]?.syncLTARRefs const savedRow = await updateOrSaveRow(currentRow, '', {}, args) - await syncLTARRefs(savedRow, args) + await syncLTARRefs?.(savedRow, args) currentRow.rowMeta.changed = false continue } @@ -700,6 +700,9 @@ const saveOrUpdateRecords = async (args: { metaValue?: TableType; viewMetaValue? } async function reloadViewDataHandler(shouldShowLoading: boolean | void) { + // save any unsaved data before reload + await saveOrUpdateRecords(); + // set value if spinner should be hidden showLoading.value = !!shouldShowLoading await loadData() @@ -715,9 +718,21 @@ async function openNewRecordHandler() { reloadViewDataHook?.on(reloadViewDataHandler) openNewRecordFormHook?.on(openNewRecordHandler) -onBeforeUnmount(() => { +onBeforeUnmount(async () => { /** save/update records before unmounting the component */ - saveOrUpdateRecords() + const viewMetaValue = view.value + const dataValue = data.value + if (viewMetaValue) { + getMeta(viewMetaValue.fk_model_id).then((res) => { + const metaValue = res + if (!metaValue) return + saveOrUpdateRecords({ + metaValue, + viewMetaValue, + data: dataValue, + }) + }) + } // reset hooks reloadViewDataHook?.off(reloadViewDataHandler) diff --git a/packages/nc-gui/composables/useViewData.ts b/packages/nc-gui/composables/useViewData.ts index 22e829f0b9..260c441a35 100644 --- a/packages/nc-gui/composables/useViewData.ts +++ b/packages/nc-gui/composables/useViewData.ts @@ -316,6 +316,7 @@ export function useViewData( await syncCount() return insertedData } catch (error: any) { + console.log(error) message.error(await extractSdkResponseErrorMsg(error)) } finally { if (currentRow.rowMeta) currentRow.rowMeta.saving = false From 6db83519df61e79e853baed5d84f951add79989f Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 14 Jun 2023 11:17:32 +0530 Subject: [PATCH 2/2] refactor: remove console.error Signed-off-by: Pranav C --- packages/nc-gui/composables/useViewData.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/nc-gui/composables/useViewData.ts b/packages/nc-gui/composables/useViewData.ts index 260c441a35..22e829f0b9 100644 --- a/packages/nc-gui/composables/useViewData.ts +++ b/packages/nc-gui/composables/useViewData.ts @@ -316,7 +316,6 @@ export function useViewData( await syncCount() return insertedData } catch (error: any) { - console.log(error) message.error(await extractSdkResponseErrorMsg(error)) } finally { if (currentRow.rowMeta) currentRow.rowMeta.saving = false