From bf07570a3e6b9f8d431702c358285705f19d2993 Mon Sep 17 00:00:00 2001 From: Yuriy Maksymets <iurii.maksymets@gmail.com> Date: Thu, 31 Oct 2019 15:48:00 +0000 Subject: [PATCH] Room event dispatch refactoring --- src/room.js | 72 +++++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/src/room.js b/src/room.js index 60d23cd..441e635 100644 --- a/src/room.js +++ b/src/room.js @@ -145,60 +145,66 @@ class Room extends EventTarget { mergeIntervals: "Map", }, }) + + const dispatchRemovedIntervalsEvent = (lineEvent) => { + const id = lineEvent.name + const intervals = this._generateRemovedIntervals(id) + const points = this._generatePath(id) + const detail = { id, intervals, points } + this.dispatchEvent( + new CustomEvent("removedIntervalsChange", { + detail, + }), + ) + } + + const dispatchPathUpdateEvent = (lineEvent) => { + const id = lineEvent.name + const points = this._generatePath(id) + const detail = { id, points } + this.dispatchEvent(new CustomEvent("addOrUpdatePath", { detail })) + } + this._y.share.strokeAdd.observe((lineEvent) => { if (lineEvent.type == "add") { - const points = this._generatePath(lineEvent.name) - const detail = { id: lineEvent.name, points } - this.dispatchEvent(new CustomEvent("addOrUpdatePath", { detail })) + dispatchPathUpdateEvent(lineEvent) + lineEvent.value.observe((pointEvent) => { if (pointEvent.type == "insert") { - const points = this._generatePath(lineEvent.name) - const detail = { id: lineEvent.name, points } - this.dispatchEvent(new CustomEvent("addOrUpdatePath", { detail })) + dispatchPathUpdateEvent(lineEvent) } }) } }) this._y.share.strokeErase.observe((lineEvent) => { if (lineEvent.type == "add") { - const points = this._generatePath(lineEvent.name) - const detail = { id: lineEvent.name, points } - this.dispatchEvent(new CustomEvent("addOrUpdatePath", { detail })) + dispatchPathUpdateEvent(lineEvent) + lineEvent.value.observe((pointEvent) => { if (pointEvent.type == "add") { - const points = this._generatePath(lineEvent.name) - const detail = { id: lineEvent.name, points } - this.dispatchEvent(new CustomEvent("addOrUpdatePath", { detail })) + dispatchPathUpdateEvent(lineEvent) } }) } }) this.sharedMergeIntervals.observe((lineEvent) => { - if (lineEvent.type == "add") { - const dispatchEvent = () => { - const id = lineEvent.name - const intervals = this._generateRemovedIntervals(id) - const points = this._generatePath(lineEvent.name) - - this.dispatchEvent( - new CustomEvent("removedIntervalsChange", { - detail: { id, intervals, points }, - }), - ) - } + if (lineEvent.type != "add") { + return + } - dispatchEvent() + dispatchRemovedIntervalsEvent(lineEvent) - lineEvent.value.observe((pointEvent) => { - if (pointEvent.type == "add") { - dispatchEvent() + lineEvent.value.observe((pointEvent) => { + if (pointEvent.type != "add") { + return + } - pointEvent.value.observe(() => { - dispatchEvent() - }) - } + dispatchRemovedIntervalsEvent(lineEvent) + + pointEvent.value.observe(() => { + dispatchRemovedIntervalsEvent(lineEvent) }) - } + }) }) } } -- GitLab