From 441f0f2bc08f066ffe25260826e4e98829dff664 Mon Sep 17 00:00:00 2001 From: Sumedha Pramod Date: Tue, 4 Dec 2018 13:23:26 -0800 Subject: [PATCH] Fix: Reset undo/redo buttons on drawing save/delete (#306) --- src/controllers/DrawingModeController.js | 8 +++++++- src/controllers/__tests__/DrawingModeController-test.js | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/controllers/DrawingModeController.js b/src/controllers/DrawingModeController.js index e56a000b6..b2734e171 100644 --- a/src/controllers/DrawingModeController.js +++ b/src/controllers/DrawingModeController.js @@ -283,6 +283,9 @@ class DrawingModeController extends AnnotationModeController { this.bindListeners(); + // Reset undo/redo buttons + this.updateUndoRedoButtonEls(); + // Given a location (page change) start drawing at the provided location if (eventData && eventData.location) { // $FlowFixMe @@ -299,6 +302,9 @@ class DrawingModeController extends AnnotationModeController { thread.removeListener('threadevent', this.handleThreadEvents); thread.unbindDrawingListeners(); + // Reset undo/redo buttons + this.updateUndoRedoButtonEls(); + if (thread.state === STATES.pending) { // Soft delete, in-progress thread doesn't require a redraw or a delete on the server // Clear in-progress thread and restart drawing @@ -405,7 +411,7 @@ class DrawingModeController extends AnnotationModeController { * @param {number} redoCount - Thenumber of objects that can be redone * @return {void} */ - updateUndoRedoButtonEls(undoCount: number, redoCount: number): void { + updateUndoRedoButtonEls(undoCount: number = 0, redoCount: number = 0): void { if (this.undoButtonEl) { if (undoCount === 1) { enableElement(this.undoButtonEl); diff --git a/src/controllers/__tests__/DrawingModeController-test.js b/src/controllers/__tests__/DrawingModeController-test.js index eefae8a53..26502d9bc 100644 --- a/src/controllers/__tests__/DrawingModeController-test.js +++ b/src/controllers/__tests__/DrawingModeController-test.js @@ -265,6 +265,7 @@ describe('controllers/DrawingModeController', () => { expect(controller.unbindListeners).toBeCalled(); expect(controller.bindListeners).toBeCalled(); expect(controller.currentThread).toBeUndefined(); + expect(controller.updateUndoRedoButtonEls).toBeCalled(); expect(thread.handleStart).not.toBeCalled(); expect(thread.removeListener).toBeCalledWith('threadevent', expect.any(Function)); expect(thread.unbindDrawingListeners).toBeCalled(); @@ -278,6 +279,7 @@ describe('controllers/DrawingModeController', () => { expect(controller.unbindListeners).toBeCalled(); expect(controller.bindListeners).toBeCalled(); expect(controller.currentThread).toBeUndefined(); + expect(controller.updateUndoRedoButtonEls).toBeCalled(); expect(thread.destroy).toBeCalled(); expect(thread.removeListener).toBeCalledWith('threadevent', expect.any(Function)); expect(thread.unbindDrawingListeners).toBeCalled(); @@ -293,6 +295,7 @@ describe('controllers/DrawingModeController', () => { }); expect(controller.unregisterThread).toBeCalled(); expect(controller.currentThread).toBeUndefined(); + expect(controller.updateUndoRedoButtonEls).toBeCalled(); expect(thread.removeListener).toBeCalledWith('threadevent', expect.any(Function)); expect(thread.unbindDrawingListeners).toBeCalled(); }); @@ -307,6 +310,7 @@ describe('controllers/DrawingModeController', () => { }); expect(controller.unbindListeners).toBeCalled(); expect(controller.bindListeners).toBeCalled(); + expect(controller.updateUndoRedoButtonEls).toBeCalled(); expect(thread.destroy).toBeCalled(); }); });