From bdb3782f8f6b27db9b90bc601a3763e46781aa7e Mon Sep 17 00:00:00 2001 From: Kevin Jahns <kevin.jahns@rwth-aachen.de> Date: Wed, 2 May 2018 18:42:18 +0200 Subject: [PATCH] add option to disable gc (compatible with older versions) --- src/MessageHandler/integrateRemoteStructs.js | 2 +- src/Struct/Type.js | 4 ++-- src/Y.js | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/MessageHandler/integrateRemoteStructs.js b/src/MessageHandler/integrateRemoteStructs.js index 390f0924..802c3af6 100644 --- a/src/MessageHandler/integrateRemoteStructs.js +++ b/src/MessageHandler/integrateRemoteStructs.js @@ -25,7 +25,7 @@ function _integrateRemoteStructHelper (y, struct) { if (y.ss.getState(id.user) > id.clock) { return } - if (struct.constructor === GC || (struct._parent.constructor !== GC && struct._parent._deleted === false)) { + if (!y.gcEnabled || struct.constructor === GC || (struct._parent.constructor !== GC && struct._parent._deleted === false)) { // Is either a GC or Item with an undeleted parent // save to integrate struct._integrate(y) diff --git a/src/Struct/Type.js b/src/Struct/Type.js index 6202454b..c8b63395 100644 --- a/src/Struct/Type.js +++ b/src/Struct/Type.js @@ -217,8 +217,8 @@ export default class Type extends Item { * collect the children of this type. */ _delete (y, createDelete, gcChildren) { - if (gcChildren === undefined) { - gcChildren = y._hasUndoManager === false + if (gcChildren === undefined || !y.gcEnabled) { + gcChildren = y._hasUndoManager === false && y.gcEnabled } super._delete(y, createDelete, gcChildren) y._transaction.changedTypes.delete(this) diff --git a/src/Y.js b/src/Y.js index 7a1ab318..0279cf17 100644 --- a/src/Y.js +++ b/src/Y.js @@ -28,8 +28,9 @@ export { default as DomBinding } from './Bindings/DomBinding/DomBinding.js' * @param {AbstractPersistence} persistence Persistence adapter instance */ export default class Y extends NamedEventHandler { - constructor (room, opts, persistence) { + constructor (room, opts, persistence, conf = {}) { super() + this.gcEnabled = conf.gc || false /** * The room name that this Yjs instance connects to. * @type {String}