Skip to content

Conversation

@hansler
Copy link
Owner

@hansler hansler commented Jul 28, 2023

…quality

Description:
Currently, StackRouterNavigator compares states inconsistently. In the "pushState" method, it compares states via "state.stateName() == newState.stateName()". Elsewhere, it compares states using "state == newState". This leads to surprising behavior in the library.

For example, if you push state with name "A", then push another state "A" with Flag.DEFAULT, the second push will no-op even if the two states aren't otherwise equal. But if you push a state with name "A", then push another state with Flag.CLEAR_TOP, clearTop won't clear the stack since a different equality check is used vs Flag.DEFAULT.

This makes the library always use the state name as the source of truth for state equality, which seems like a more expected behavior.

Related issue(s): RF-8841

…quality

Currently, StackRouterNavigator compares states inconsistently. In the "pushState" method, it compares states via "state.stateName() == newState.stateName()". Elsewhere, it compares states using "state == newState". This leads to surprising behavior in the library.

For example, if you push state with name "A", then push another state "A" with Flag.DEFAULT, the second push will no-op even if the two states aren't otherwise equal. But if you push a state with name "A", then push another state with Flag.CLEAR_TOP, clearTop won't clear the stack since a different equality check is used vs Flag.DEFAULT.

This makes the library always use the state name as the source of truth for state equality, which seems like a more expected behavior.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants