This repository was archived by the owner on Jul 19, 2022. It is now read-only.
Drive perspective changes off of Route changes#282
Merged
Conversation
hojberg
commented
Dec 2, 2021
| Hash as a HashOnly are considered the same | ||
| -} | ||
| same : Reference -> Reference -> Bool | ||
| same a b = |
Member
Author
There was a problem hiding this comment.
This becomes very useful for de-duping
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 the `Perspective` when changing URLs to the same `Perspective` with a different definition and ensure we correctly dedupe `WorkspaceItems` when we change `Perspective`. To support this add a bunch of helper functions: * Equality and sameness functions to `Reference`, `Perspective`, and `HashQualified` * List-like functions; `find`, `any`, and `all` to `WorkspaceItems` With regards to deduping `WorkspaceItems`, this is needed because when we change `Perspective` with any open defintions, we migrate the `WorkspaceItems` to be indexed by `Hash` instead of `FQN`, and then when the user subsequently uses the back button to the previous URL that was `FQN` based, we want to avoid re-fetching and duplicating the same item (their `Reference` are technically different in that one is `Hash` based and one is `FQN` based for the same `WorkspaceItem`). So as soon as we get the data back from the server and can see that it includes the `Hash` of an already fetched definition, we dedupe.
a1d7400 to
42f3789
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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 thePerspectivewhen changing URLs to the samePerspectivewith a different definition and ensure we correctly dedupeWorkspaceItemswhen we changePerspective.Fixes: #195
Implementation notes
To support this add a bunch of helper functions:
Reference,Perspective, andHashQualifiedfind,any, andalltoWorkspaceItemsWith regards to deduping
WorkspaceItems, this is needed because when we changePerspectivewith any open defintions, we migrate theWorkspaceItemsto be indexed byHashinstead ofFQN, and then when the user subsequently uses the back button to the previous URL that wasFQNbased, we want to avoid re-fetching and duplicating the same item (theirReferenceare technically different in that one isHashbased and one isFQNbased for the sameWorkspaceItem). So as soon as we get the data back from the server and can see that it includes theHashof an already fetched definition, we dedupe.