Browse Source

Fix undoOnce (#332)

I just pasted @enzoferey's implementation and it fixed the bug reported by @dwelle

Fixes #307
Christopher Chedeau 5 years ago
parent
commit
44657efe71
2 changed files with 9 additions and 9 deletions
  1. 8 8
      src/history.ts
  2. 1 1
      src/index.tsx

+ 8 - 8
src/history.ts

@@ -51,15 +51,15 @@ class SceneHistory {
     return null;
   }
 
-  undoOnce(elements: readonly ExcalidrawElement[]) {
-    const currentEntry = this.generateCurrentEntry(elements);
-    let entryToRestore = this.stateHistory.pop();
-
-    // If nothing was changed since last, take the previous one
-    if (currentEntry === entryToRestore) {
-      entryToRestore = this.stateHistory.pop();
+  undoOnce() {
+    if (this.stateHistory.length === 0) {
+      return null;
     }
-    if (entryToRestore !== undefined) {
+
+    const currentEntry = this.stateHistory.pop();
+    const entryToRestore = this.stateHistory[this.stateHistory.length - 1];
+
+    if (currentEntry !== undefined) {
       this.redoStack.push(currentEntry);
       return this.restoreEntry(entryToRestore);
     }

+ 1 - 1
src/index.tsx

@@ -256,7 +256,7 @@ export class App extends React.Component<{}, AppState> {
         }
       } else {
         // undo action
-        const data = history.undoOnce(elements);
+        const data = history.undoOnce();
         if (data !== null) {
           elements = data;
         }