Browse Source

fix(gui): wait until inserting record to avoid duplicate row insertion

Signed-off-by: Pranav C <pranavxc@gmail.com>
pull/4088/head
Pranav C 2 years ago
parent
commit
507780a098
  1. 2
      packages/nc-gui/components/smartsheet/Grid.vue
  2. 8
      packages/nc-gui/composables/useViewData.ts

2
packages/nc-gui/components/smartsheet/Grid.vue

@ -705,7 +705,7 @@ watch(
.nc-expand { .nc-expand {
&:not(.nc-comment) { &:not(.nc-comment) {
//@apply hidden; @apply hidden;
} }
&.nc-comment { &.nc-comment {

8
packages/nc-gui/composables/useViewData.ts

@ -11,6 +11,7 @@ import {
message, message,
populateInsertObject, populateInsertObject,
ref, ref,
until,
useApi, useApi,
useGlobal, useGlobal,
useI18n, useI18n,
@ -224,8 +225,8 @@ export function useViewData(
insertObj, insertObj,
) )
formattedData.value?.splice(rowIndex ?? 0, 1, { Object.assign(formattedData.value[rowIndex], {
row: insertedData, row: { ...insertedData, ...row },
rowMeta: { ...row.rowMeta, new: undefined }, rowMeta: { ...row.rowMeta, new: undefined },
oldRow: { ...insertedData }, oldRow: { ...insertedData },
}) })
@ -287,6 +288,9 @@ export function useViewData(
ltarState?: Record<string, any>, ltarState?: Record<string, any>,
args: { metaValue?: TableType; viewMetaValue?: ViewType } = {}, args: { metaValue?: TableType; viewMetaValue?: ViewType } = {},
) { ) {
// if new row and save is in progress then wait until the save is complete
await until(() => !(row.rowMeta.new && row.rowMeta.saving)).toMatch((v) => v)
if (row.rowMeta.new) { if (row.rowMeta.new) {
return await insertRow(row.row, formattedData.value.indexOf(row), ltarState, args) return await insertRow(row.row, formattedData.value.indexOf(row), ltarState, args)
} else { } else {

Loading…
Cancel
Save