From 607d42f97db21ec06278abeb3164019b2e3b9411 Mon Sep 17 00:00:00 2001 From: Charley DAVID Date: Thu, 22 Oct 2020 18:02:38 +0200 Subject: [PATCH] feat(presence): Support for arbitrary data --- lib/json1.ts | 6 +++--- test/presence.js | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/json1.ts b/lib/json1.ts index 204430b..733ea9e 100644 --- a/lib/json1.ts +++ b/lib/json1.ts @@ -735,11 +735,11 @@ function transformPresence(presence: Presence | null, op: JSONOp, isOwnOperation const end = transformPosition(presence.end, op) if (start && end) { - return { start, end } + return { ...presence, start, end } } else if (start) { - return { start, end: start } + return { ...presence, start, end: start } } else if (end) { - return { start: end, end } + return { ...presence, start: end, end } } return null diff --git a/test/presence.js b/test/presence.js index 3949ea8..e74e54b 100644 --- a/test/presence.js +++ b/test/presence.js @@ -83,4 +83,13 @@ describe("presences", () => { presenceAfter ); }); + + it("allows arbitrary data in presences", () => { + const op = ["z", 0, { i: "hello" }]; + const data = { user: "John Doe", color: "blue" }; + const presenceBefore = { start: ["z", 0], end: ["z", 1], data }; + const presenceAfter = type.transformPresence(presenceBefore, op); + + assert.ok(presenceBefore.data === presenceAfter.data); + }); });