(cs: IRemoteChangeset)
| 436 | } |
| 437 | |
| 438 | private doTransform(cs: IRemoteChangeset) { |
| 439 | let remoteActions = cs.operations.reduce<IJOTAction[]>((pre, op) => { |
| 440 | pre.push(...op.actions); |
| 441 | return pre; |
| 442 | }, []); |
| 443 | |
| 444 | this.event.getUndoManager().doTransform(remoteActions); |
| 445 | |
| 446 | // localChangeset needs to be transformed and updated to the latest version |
| 447 | if (this.bufferStorage.localPendingChangeset) { |
| 448 | console.log( |
| 449 | 'localPendingChangeset before transform:', |
| 450 | { localChangeset: this.bufferStorage.localPendingChangeset, remoteActions }, |
| 451 | ); |
| 452 | const newOperations = this.bufferStorage.localPendingChangeset.operations.map(op => { |
| 453 | const [leftOp, rightOp] = jot.transformX(op.actions, remoteActions); |
| 454 | remoteActions = rightOp; |
| 455 | return { |
| 456 | cmd: op.cmd, |
| 457 | actions: leftOp, |
| 458 | }; |
| 459 | }); |
| 460 | this.bufferStorage.localPendingChangeset = { |
| 461 | ...this.bufferStorage.localPendingChangeset, |
| 462 | operations: newOperations, |
| 463 | baseRevision: cs.revision, |
| 464 | }; |
| 465 | console.log( |
| 466 | 'localChangeset after transformed: ', |
| 467 | { localChangeset: this.bufferStorage.localPendingChangeset, remoteActions }, |
| 468 | ); |
| 469 | } |
| 470 | |
| 471 | if (this.bufferStorage.opBuffer.length) { |
| 472 | console.log( |
| 473 | 'opBuffer before transform:', |
| 474 | { localChangeset: this.bufferStorage.localPendingChangeset, remoteActions }, |
| 475 | ); |
| 476 | this.bufferStorage.opBuffer = this.bufferStorage.opBuffer.map(op => { |
| 477 | const [leftOp, rightOp] = jot.transformX(op.actions, remoteActions); |
| 478 | remoteActions = rightOp; |
| 479 | return { |
| 480 | cmd: op.cmd, |
| 481 | actions: leftOp, |
| 482 | }; |
| 483 | }); |
| 484 | console.log( |
| 485 | 'opBuffer after transformed: ', |
| 486 | { localPendingChangeset: this.bufferStorage.localPendingChangeset, serverOperations: remoteActions }, |
| 487 | ); |
| 488 | } |
| 489 | |
| 490 | return remoteActions; |
| 491 | } |
| 492 | } |
| 493 |
no test coverage detected