chessboardjsx icon indicating copy to clipboard operation
chessboardjsx copied to clipboard

Redo after undo

Open szpakowski opened this issue 5 years ago • 2 comments

I am having a similar problem compared to #35

Essentially if I undo a move and then want to redo the move, the position does not update to the new position.

Please see https://codesandbox.io/s/chessboardjsx-forward-back-buttons-nlmzn for working code and stackoverlfow issue https://stackoverflow.com/questions/57447692/chessboardjsx-undo-and-redo-moves-are-not-updating-when-changing-direction

szpakowski avatar Feb 11 '20 17:02 szpakowski

// Check if there is a new position coming from props or undo is called
if (!isEqual(positionFromProps, previousPositionFromProps) || undoMove) {
  this.setState({
    previousPositionFromProps: previousPositionFromProps,
    undoMove: false
  });

The problem seems to stem from the fact that the previous position is being stored.

I changed the above to:

// Check if there is a new position coming from props or undo is called
if (!isEqual(positionFromProps, previousPositionFromProps) || undoMove) {
  this.setState({
    previousPositionFromProps: previousPositionFromProps,
    undoMove: false,
    currentPosition: positionFromProps
  });

The issue I was having was directly related to trying to go to the most recent position. Note that doing the above will cause undo to fail from the available demos. Personally, I would remove this feature and keep it a pure implementation of chess board position only (as stated in the description).

szpakowski avatar Feb 12 '20 23:02 szpakowski

I just ran into this and came to report the issue. I'm simply trying to manage fen outside the chessboard and pass it in (implementing move-back feature) and moving back one move just doesn't work. Moving back two moves does.

Also I don't understand how this undo feature would be usable in any scenario. If I have a PGN game player for example, I want a back button feature to go back. This feature can only allow back one move, and actively blocks me from implementing a real back button. Can there at least be a way to opt out of this behavior?

kevinludwig avatar May 06 '20 06:05 kevinludwig