This repository has been archived by the owner on Jul 19, 2022. It is now read-only.
Drive perspective changes off of Route changes #282
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
Instead of changing perspectives directly and fetching details before changing the URL; first change the URL and then change the
Perspective
. Ensure that we don't fetch thePerspective
when changing URLs to the samePerspective
with a different definition and ensure we correctly dedupeWorkspaceItems
when we changePerspective
.Fixes: #195
Implementation notes
To support this add a bunch of helper functions:
Reference
,Perspective
, andHashQualified
find
,any
, andall
toWorkspaceItems
With regards to deduping
WorkspaceItems
, this is needed because when we changePerspective
with any open defintions, we migrate theWorkspaceItems
to be indexed byHash
instead ofFQN
, and then when the user subsequently uses the back button to the previous URL that wasFQN
based, we want to avoid re-fetching and duplicating the same item (theirReference
are technically different in that one isHash
based and one isFQN
based for the sameWorkspaceItem
). So as soon as we get the data back from the server and can see that it includes theHash
of an already fetched definition, we dedupe.