diff --git a/src/app.js b/src/app.js index 10ab8c2cac911c8c1075876b18683de8b32b6081..9f7061586ca60a2070ccb57922ca23f11c1d1b90 100644 --- a/src/app.js +++ b/src/app.js @@ -163,11 +163,6 @@ const onRoomConnect = (room_) => { HTML.fastUndoButton.classList.remove("disabled") HTML.undoButton.classList.remove("disabled") }) - - room.addEventListener("undoDisabled", () => { - HTML.fastUndoButton.classList.add("disabled") - HTML.undoButton.classList.add("disabled") - }) } const tryRoomConnect = async (roomID) => { @@ -208,11 +203,26 @@ const onRoomJoinEnter = () => { HTML.roomConnectButton.addEventListener("click", onRoomJoinEnter) -HTML.fastUndoButton.addEventListener( - "click", - () => room != null && room.fastUndo(), -) -HTML.undoButton.addEventListener("click", () => room != null && room.undo()) +HTML.fastUndoButton.addEventListener("click", () => { + if (room == null) return + + room.fastUndo() + + if (!room.canUndo) { + HTML.fastUndoButton.classList.add("disabled") + HTML.undoButton.classList.add("disabled") + } +}) +HTML.undoButton.addEventListener("click", () => { + if (room == null) return + + room.undo() + + if (!room.canUndo) { + HTML.fastUndoButton.classList.add("disabled") + HTML.undoButton.classList.add("disabled") + } +}) HTML.roomIDElem.addEventListener("keydown", (event) => { if (event.key == "Enter") { diff --git a/src/room.js b/src/room.js index c0325bb3e821168b29c82201da34d0443a99d3db..c8422ab6798ebf10d00712e256c32894ed69a0fc 100644 --- a/src/room.js +++ b/src/room.js @@ -72,10 +72,6 @@ class Room extends EventTarget { const [id, ...interval] = operation this.shared.eraseIntervals.get(id).merge([interval]) - - if (this.undoStack.length <= 0) { - this.dispatchEvent(new CustomEvent("undoDisabled")) - } } fastUndo() { @@ -96,10 +92,10 @@ class Room extends EventTarget { this.undoStack = this.undoStack.slice(0, Math.max(0, from)) this.shared.eraseIntervals.get(id).merge([[0, end]]) + } - if (this.undoStack.length <= 0) { - this.dispatchEvent(new CustomEvent("undoDisabled")) - } + get canUndo() { + return this.undoStack.length > 0 } getPaths() {