diff --git a/packages/nc-gui/components/smartsheet/Form.vue b/packages/nc-gui/components/smartsheet/Form.vue index 683e4550d0..9b941404cb 100644 --- a/packages/nc-gui/components/smartsheet/Form.vue +++ b/packages/nc-gui/components/smartsheet/Form.vue @@ -117,7 +117,7 @@ async function submitForm() { if (e.errorFields.length) return } - const insertedRowData = await insertRow(formState) + const insertedRowData = await insertRow({ row: formState, oldRow: {}, rowMeta: { new: true } }) if (insertedRowData) { await syncLTARRefs(insertedRowData) diff --git a/packages/nc-gui/composables/useViewData.ts b/packages/nc-gui/composables/useViewData.ts index 3c90cb8890..e2c2dff658 100644 --- a/packages/nc-gui/composables/useViewData.ts +++ b/packages/nc-gui/composables/useViewData.ts @@ -180,12 +180,12 @@ export function useViewData( if ((!project?.value?.id || !meta.value?.id || !viewMeta.value?.id) && !isPublic.value) return const response = !isPublic.value ? await api.dbViewRow.list('noco', project.value.id!, meta.value!.id!, viewMeta.value!.id!, { - ...queryParams.value, - ...params, - ...(isUIAllowed('sortSync') ? {} : { sortArrJson: JSON.stringify(sorts.value) }), - ...(isUIAllowed('filterSync') ? {} : { filterArrJson: JSON.stringify(nestedFilters.value) }), - where: where?.value, - }) + ...queryParams.value, + ...params, + ...(isUIAllowed('sortSync') ? {} : { sortArrJson: JSON.stringify(sorts.value) }), + ...(isUIAllowed('filterSync') ? {} : { filterArrJson: JSON.stringify(nestedFilters.value) }), + where: where?.value, + }) : await fetchSharedViewData({ sortsArr: sorts.value, filtersArr: nestedFilters.value }) formattedData.value = formatData(response.list) paginationData.value = response.pageInfo @@ -201,15 +201,13 @@ export function useViewData( } async function insertRow( - row: Record, + currentRow: Row, rowIndex = formattedData.value?.length, ltarState: Record = {}, - { - metaValue = meta.value, - viewMetaValue = viewMeta.value, - }: { metaValue?: TableType; viewMetaValue?: ViewType } = {}, + { metaValue = meta.value, viewMetaValue = viewMeta.value }: { metaValue?: TableType; viewMetaValue?: ViewType } = {}, ) { - if (formattedData.value[rowIndex].rowMeta) formattedData.value[rowIndex].rowMeta.saving = true + const row = currentRow + if (currentRow.rowMeta) currentRow.rowMeta.saving = true try { const { missingRequiredColumns, insertObj } = await populateInsertObject({ meta: metaValue!, @@ -228,9 +226,9 @@ export function useViewData( insertObj, ) - Object.assign(formattedData.value[rowIndex], { + Object.assign(currentRow, { row: { ...insertedData, ...row }, - rowMeta: { ...(row.rowMeta || {}), new: undefined }, + rowMeta: { ...(currentRow.rowMeta || {}), new: undefined }, oldRow: { ...insertedData }, }) @@ -239,17 +237,14 @@ export function useViewData( } catch (error: any) { message.error(await extractSdkResponseErrorMsg(error)) } finally { - if (formattedData.value[rowIndex].rowMeta) formattedData.value[rowIndex].rowMeta.saving = false + if (currentRow.rowMeta) currentRow.rowMeta.saving = false } } async function updateRowProperty( toUpdate: Row, property: string, - { - metaValue = meta.value, - viewMetaValue = viewMeta.value, - }: { metaValue?: TableType; viewMetaValue?: ViewType } = {}, + { metaValue = meta.value, viewMetaValue = viewMeta.value }: { metaValue?: TableType; viewMetaValue?: ViewType } = {}, ) { if (toUpdate.rowMeta) toUpdate.rowMeta.saving = true try { @@ -298,7 +293,7 @@ export function useViewData( await until(() => !(row.rowMeta?.new && row.rowMeta?.saving)).toMatch((v) => v) if (row.rowMeta.new) { - return await insertRow(row.row, formattedData.value.indexOf(row), ltarState, args) + return await insertRow(row, formattedData.value.indexOf(row), ltarState, args) } else { await updateRowProperty(row, property!, args) } @@ -315,7 +310,7 @@ export function useViewData( async function deleteRowById(id: string) { if (!id) { - throw new Error('Delete not allowed for table which doesn\'t have primary Key') + throw new Error("Delete not allowed for table which doesn't have primary Key") } const res: any = await $api.dbViewRow.delete(