From 4de0b4b79812c80c9f8443ca1f39c76f3060305a Mon Sep 17 00:00:00 2001
From: Alexandros Georgantas <alexgeorg86@gmail.com>
Date: Wed, 22 Feb 2017 11:42:37 +0200
Subject: [PATCH] Track changes in document working

---
 .../track_change/TrackChangeComponent.js      |  1 +
 .../track_change/TrackChangesProvider.js      | 31 ++++++++++++-------
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangeComponent.js b/app/components/SimpleEditor/elements/track_change/TrackChangeComponent.js
index 77d2d06..f8d023a 100644
--- a/app/components/SimpleEditor/elements/track_change/TrackChangeComponent.js
+++ b/app/components/SimpleEditor/elements/track_change/TrackChangeComponent.js
@@ -64,6 +64,7 @@ class TrackChangeComponent extends AnnotationComponent {
   resolve (action) {
     const annotation = this.props.node
     const provider = this.getProvider()
+    console.log('provider', provider)
 
     provider.resolve(annotation, action)
   }
diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js b/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js
index c51a421..900b498 100644
--- a/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js
+++ b/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js
@@ -17,9 +17,6 @@ import {
 
 import {
   annotationHelpers,
-  deleteCharacter as deleteChar,
-  deleteNode,
-  deleteSelection as deleteSel,
   truncateAnnotation,
   TOCProvider
 } from 'substance'
@@ -28,7 +25,7 @@ class TrackChangesProvider extends TOCProvider {
   constructor (document, config) {
     super(document, config)
     // config.documentSession.on('didUpdate', this.handleUndoRedo, this)
-
+    console.log('this track provider', this)
     // HACK -- use TOCProvider's event to capture new / deleted changes
     this.on('toc:updated', this.reComputeEntries, this)
 
@@ -474,7 +471,7 @@ class TrackChangesProvider extends TOCProvider {
 
     const transformation = (tx, args) => {
       args.direction = direction
-      return deleteChar(tx, args)
+      return tx.deleteCharacter(direction)
     }
 
     surface.editorSession.transaction(transformation, info)
@@ -483,10 +480,15 @@ class TrackChangesProvider extends TOCProvider {
   deleteSelection (selection) {
     const surface = this.getSurface()
     const info = { action: 'delete' }
-
     const transformation = (tx, args) => {
-      args.selection = selection
-      return deleteSel(tx, args)
+      tx.setSelection({
+        type: 'property',
+        path: selection.path,
+        surfaceId: 'body',
+        startOffset: selection.start.offset,
+        endOffset: selection.end.offset
+      })
+      return tx.deleteSelection()
     }
 
     surface.editorSession.transaction(transformation, info)
@@ -521,11 +523,10 @@ class TrackChangesProvider extends TOCProvider {
     const surface = this.getSurface()
 
     const transformation = (tx, args) => {
-      args.nodeId = annotation.id
-      deleteNode(tx, args)
+      tx.delete(annotation.id)
     }
 
-    surface.transaction(transformation)
+    surface.editorSession.transaction(transformation)
   }
 
   truncateTrackAnnotation (selection, annotation) {
@@ -552,6 +553,8 @@ class TrackChangesProvider extends TOCProvider {
     const selection = annotation.getSelection()
     const status = annotation.status
 
+    console.log('resolve', this)
+
     this.removeTrackAnnotation(annotation)
 
     if (
@@ -573,6 +576,7 @@ class TrackChangesProvider extends TOCProvider {
     })
 
     const entries = this.sortNodes(changes)
+    console.log('entries', entries)
     return entries
   }
 
@@ -624,7 +628,8 @@ class TrackChangesProvider extends TOCProvider {
     controller.scrollTo(annotation.id)
 
     const selection = annotation.getSelection()
-    surface.setSelection(selection)
+
+    surface.editorSession.setSelection(selection)
     this.moveCursorTo('start')
   }
 
@@ -808,6 +813,8 @@ class TrackChangesProvider extends TOCProvider {
 
     // TODO -- use substance's selection.collapse(direction)
     if (point === 'start') {
+      selection.start.offset -= 1
+      selection.end.offset -= 1
       selection.end.offset = selection.start.offset
     } else if (point === 'end') {
       selection.start.offset = selection.end.offset
-- 
GitLab