diff --git a/cypress/e2e/history.cy.ts b/cypress/e2e/history.cy.ts index fedf69f8..4f865ce4 100644 --- a/cypress/e2e/history.cy.ts +++ b/cypress/e2e/history.cy.ts @@ -87,4 +87,39 @@ describe("history", () => { ], }); }); + + it("should not redo after undo and value change", () => { + when.setStyle("geojson"); + when.modal.open(); + when.modal.fillLayers({ + id: "step 1", + type: "background", + }); + + when.modal.open(); + when.modal.fillLayers({ + id: "step 2", + type: "background", + }); + + when.typeKeys(undoKeyCombo); + when.typeKeys(undoKeyCombo); + then(get.styleFromLocalStorage()).shouldDeepNestedInclude({ layers: [] }); + + when.modal.open(); + when.modal.fillLayers({ + id: "step 3", + type: "background", + }); + + when.typeKeys(redoKeyCombo); + then(get.styleFromLocalStorage()).shouldDeepNestedInclude({ + layers: [ + { + id: "step 3", + type: "background", + }, + ], + }); + }); }); diff --git a/src/libs/revisions.ts b/src/libs/revisions.ts index 4cdf0f4c..fd1b4180 100644 --- a/src/libs/revisions.ts +++ b/src/libs/revisions.ts @@ -19,10 +19,13 @@ export class RevisionStore { } addRevision(revision: StyleSpecification & {id: string}) { - //TODO: compare new revision style id with old ones - //and ensure that it is always the same id + // clear any "redo" revisions once a change is made + // and ensure current index is at end of list + this.revisions = this.revisions.slice(0, this.currentIdx + 1); + this.revisions.push(revision) this.currentIdx++ + //} } undo() {