From 5d582c0f01f0a13e1e0c3476c6d254678495f6da Mon Sep 17 00:00:00 2001 From: pubuzhixing8 Date: Wed, 5 Feb 2025 16:49:16 +0800 Subject: [PATCH] fix(state): transform undefined as null to avoid yjs error for system field #WIK-17191 --- packages/grid/src/core/types/ai-table.ts | 2 +- packages/state/src/shared/to-yjs/add-node.ts | 2 +- packages/state/src/shared/utils/initialize.ts | 1 - packages/state/src/shared/utils/translate.ts | 10 +++++++--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/grid/src/core/types/ai-table.ts b/packages/grid/src/core/types/ai-table.ts index ef640ea1..03b77f40 100644 --- a/packages/grid/src/core/types/ai-table.ts +++ b/packages/grid/src/core/types/ai-table.ts @@ -1,6 +1,6 @@ import { Signal, WritableSignal } from '@angular/core'; import { Colors } from '../../constants/colors'; -import { AITableReferences, AITableSelection } from '../../types'; +import { AITableSelection } from '../../types'; import { RendererContext } from '../context'; import { AIRecordFieldIdPath, AITableField, AITableFields, AITableRecord, AITableRecords } from './core'; diff --git a/packages/state/src/shared/to-yjs/add-node.ts b/packages/state/src/shared/to-yjs/add-node.ts index ce8aee54..30300300 100644 --- a/packages/state/src/shared/to-yjs/add-node.ts +++ b/packages/state/src/shared/to-yjs/add-node.ts @@ -58,7 +58,7 @@ export default function addNode( if (records) { const recordIndex = getSharedRecordIndex(records, action.path[0]); const record = records.get(recordIndex); - if (action.updatedInfo.updated_at && action.updatedInfo.updated_at) { + if (action.updatedInfo.updated_at && action.updatedInfo.updated_by) { setRecordUpdatedInfo(record, action.updatedInfo as { updated_at: number; updated_by: string }); } } diff --git a/packages/state/src/shared/utils/initialize.ts b/packages/state/src/shared/utils/initialize.ts index 1edb8470..2bddcdb7 100644 --- a/packages/state/src/shared/utils/initialize.ts +++ b/packages/state/src/shared/utils/initialize.ts @@ -62,7 +62,6 @@ export function toSharedType( return toRecordSyncElement(record, data.fields); }) ); - const viewsSharedType = new Y.Array(); sharedType.set('views', viewsSharedType); viewsSharedType.insert(0, data.views.map(toSyncElement)); diff --git a/packages/state/src/shared/utils/translate.ts b/packages/state/src/shared/utils/translate.ts index 8ecbdb5e..15aef606 100644 --- a/packages/state/src/shared/utils/translate.ts +++ b/packages/state/src/shared/utils/translate.ts @@ -1,4 +1,4 @@ -import { AITableRecordUpdatedInfo, FieldValue, TrackableEntity } from '@ai-table/grid'; +import { AITableRecordUpdatedInfo, FieldValue, isSystemField, TrackableEntity } from '@ai-table/grid'; import { AITableViewField, AITableViewFields, @@ -38,7 +38,12 @@ export function toRecordSyncElement(record: AITableViewRecord, fields: AITableVi const customFieldValues = new Y.Array(); const valuesArray: FieldValue[] = []; fields.forEach((field: AITableViewField) => { - valuesArray.push(record['values'][field._id]); + let value = record['values'][field._id]; + // yjs will throw an error if the value is undefined. + if (value === undefined) { + value = null; + } + valuesArray.push(value); }); customFieldValues.insert(0, valuesArray); // To save memory, convert map to array. @@ -57,7 +62,6 @@ export function translatePositionToPath(data: AITableViewRecords | AITableViewFi if (index === -1) { index = data.length; } - return [index]; }