Core views frontend (#13932)

Parallel code path to read and write core views when
IS_CORE_VIEW_ENABLED.

Migrated view key to an enum.

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
This commit is contained in:
Raphaël Bosi
2025-08-20 19:04:58 +02:00
committed by GitHub
parent deec9c96da
commit 30c42345f0
114 changed files with 5019 additions and 254 deletions
@@ -9,7 +9,7 @@ import { type ObjectRecordDiff } from 'src/engine/core-modules/event-emitter/typ
import { ViewFilter } from 'src/engine/core-modules/view/entities/view-filter.entity';
import { type ViewFilterWorkspaceEntity } from 'src/modules/view/standard-objects/view-filter.workspace-entity';
import { convertViewFilterOperandToCoreOperand } from 'src/modules/view/utils/convert-view-filter-operand-to-core-operand.util';
import { transformViewFilterWorkspaceValueToCoreValue } from 'src/modules/view/utils/transform-view-filter-workspace-value-to-core-value';
import { convertViewFilterWorkspaceValueToCoreValue } from 'src/modules/view/utils/convert-view-filter-workspace-value-to-core-value';
@Injectable()
export class ViewFilterSyncService {
@@ -32,7 +32,7 @@ export class ViewFilterSyncService {
if (isDefined(diffValue)) {
if (key === 'value' && typeof diffValue.after === 'string') {
updateData[key] = transformViewFilterWorkspaceValueToCoreValue(
updateData[key] = convertViewFilterWorkspaceValueToCoreValue(
diffValue.after,
);
} else if (key === 'operand' && diffValue.after) {
@@ -63,7 +63,7 @@ export class ViewFilterSyncService {
operand: convertViewFilterOperandToCoreOperand(
workspaceViewFilter.operand as SharedViewFilterOperand,
),
value: transformViewFilterWorkspaceValueToCoreValue(
value: convertViewFilterWorkspaceValueToCoreValue(
workspaceViewFilter.value,
),
viewFilterGroupId: workspaceViewFilter.viewFilterGroupId,
@@ -6,6 +6,7 @@ import { Repository } from 'typeorm';
import { type ObjectRecordDiff } from 'src/engine/core-modules/event-emitter/types/object-record-diff';
import { View } from 'src/engine/core-modules/view/entities/view.entity';
import { ViewKey } from 'src/engine/core-modules/view/enums/view-key.enum';
import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in';
import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum';
import { type ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity';
@@ -38,6 +39,11 @@ export class ViewSyncService {
} else if (key === 'type') {
updateData[key] =
diffValue.after === 'table' ? ViewType.TABLE : ViewType.KANBAN;
} else if (key === 'key') {
updateData[key] =
diffValue.after === 'INDEX' || diffValue.after === ViewKey.INDEX
? ViewKey.INDEX
: null;
} else {
updateData[key] = diffValue.after;
}
@@ -63,7 +69,10 @@ export class ViewSyncService {
name: viewName,
objectMetadataId: workspaceView.objectMetadataId,
type: workspaceView.type === 'table' ? ViewType.TABLE : ViewType.KANBAN,
key: workspaceView.key,
key:
workspaceView.key === 'INDEX' || workspaceView.key === ViewKey.INDEX
? ViewKey.INDEX
: null,
icon: workspaceView.icon,
position: workspaceView.position,
isCompact: workspaceView.isCompact,
@@ -1,6 +1,6 @@
import { type ViewFilterValue } from 'src/engine/core-modules/view/types/view-filter-value.type';
export const transformViewFilterWorkspaceValueToCoreValue = (
export const convertViewFilterWorkspaceValueToCoreValue = (
value: string,
): ViewFilterValue => {
try {