From 2483bc5f833de809a5ff1a9a9b7a257bad4ab1b7 Mon Sep 17 00:00:00 2001 From: Eugen Neufeld Date: Fri, 4 Nov 2022 22:52:18 +0100 Subject: [PATCH] Improve handling of array editing This improves the handling of array editing. --- .../coffee-tree/coffee-tree-editor-widget.tsx | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/client/coffee-editor-extension/src/browser/coffee-tree/coffee-tree-editor-widget.tsx b/client/coffee-editor-extension/src/browser/coffee-tree/coffee-tree-editor-widget.tsx index 31cbb172..68a6a858 100644 --- a/client/coffee-editor-extension/src/browser/coffee-tree/coffee-tree-editor-widget.tsx +++ b/client/coffee-editor-extension/src/browser/coffee-tree/coffee-tree-editor-widget.tsx @@ -253,7 +253,7 @@ export class CoffeeTreeEditorWidget extends NavigatableTreeEditorWidget { ) }; } else { - const feature = this.getFeature(diffPatch.path, !!diffPatch.path.match(/^\/ram(\/\d+)?/gm)); + const feature = this.getFeature(diffPatch.path); return { op: diffPatch.op, path: this.getOperationPath(this.getOwnerIdByPath(diffPatch.path, changedObject, oldObject, diffPatch.op), feature), @@ -262,7 +262,7 @@ export class CoffeeTreeEditorWidget extends NavigatableTreeEditorWidget { } } case 'add': { - const feature = this.getFeature(diffPatch.path, !!diffPatch.path.match(/^\/ram(\/\d+)?/gm)); + const feature = this.getFeature(diffPatch.path); return { op: diffPatch.op, path: this.getOperationPath(this.getOwnerIdByPath(diffPatch.path, changedObject, oldObject, diffPatch.op), feature), @@ -283,12 +283,13 @@ export class CoffeeTreeEditorWidget extends NavigatableTreeEditorWidget { } } - protected getFeature(patchPath: string, addFeature = false): string { - if (addFeature) { - const segments = patchPath.split('/').slice(1); - return segments.length > 1 ? segments.slice(0, -1)[0] : segments[0]; + protected getFeature(patchPath: string): string { + let segments = patchPath.split('/'); + const segmentsLength = segments.length - 1; + if (!isNaN(segments[segmentsLength] as any)) { + segments = segments.slice(0, segmentsLength); } - return patchPath.split('/').reverse()[0]; + return segments[segments.length - 1]; } protected getOwnerIdByPath(