Skip to content

Commit

Permalink
fix(archive): fix back() issue
Browse files Browse the repository at this point in the history
  • Loading branch information
unadlib committed Mar 24, 2024
1 parent 89ae349 commit ab40694
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,9 @@ export const useTravel = <S, F extends boolean, A extends boolean>(
nextPosition = 0;
}
if (nextPosition === position) return;
if (shouldArchive) {
_allPatches.inversePatches.slice(-1)[0].reverse();
}
setState(
() =>
apply(
Expand Down
35 changes: 35 additions & 0 deletions test/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1485,4 +1485,39 @@ describe('useTravel', () => {
}
`);
});

it('[useTravel] - back() with autoArchive: false', () => {
let { result } = renderHook(() =>
useTravel(0, {
maxHistory: 3,
autoArchive: false,
})
);
let [nextState, setState, controls] = result.current;
expect(nextState).toEqual(0);
expect(controls.position).toEqual(0);
expect(controls.getHistory()).toEqual([0]);

act(() => setState(() => 1));
[nextState, setState, controls] = result.current;
expect(nextState).toEqual(1);
expect(controls.position).toEqual(1);
expect(controls.getHistory()).toEqual([0, 1]);

act(() => setState(() => 2));
[nextState, setState, controls] = result.current;
expect(nextState).toEqual(2);
expect(controls.position).toEqual(1);
expect(controls.getHistory()).toEqual([0, 2]);


// act(() => controls.archive());
// [nextState, setState, controls] = result.current;

act(() => controls.back());
[nextState, setState, controls] = result.current;
expect(nextState).toEqual(0);
expect(controls.position).toEqual(0);
expect(controls.getHistory()).toEqual([0, 2]);
});
});

0 comments on commit ab40694

Please sign in to comment.