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.
Description
The browse pages currently perform some unnecessary recalculations which cause some performance issues. I updated some Observables to remove useless emits which prevents methods like
updatePageWithItems
&updatePage
from being called twice when switching the sort order for example.Instructions for Reviewers
List of changes in this PR:
scope$
emits inngOnChanges()
updatePageWithItems
&updatePage
methods from being called twice when you update pagination options or sort direction. This is because the wholecombineLatest
was triggered twice when making those changes, once by thethis.currentPagination$
/this.currentSort$
and once by thethis.route.queryParams
. To fix this I created a new observablerouteParams$
for each browse section that doesn't emit when the pagination/sort/... parameters are updatedshareReplay
to therequestHref$
observable toBaseDataService
'sfindByHref
&findListByHref
methods. This will preventfindByHref
s &findListByHref
s who derive theirhref$
from another Observable call to trigger that Observable over again.Guidance for how to test or review this PR:
tap
console.log
toBrowseService#getBrowseEntriesFor
'shref$
observable at the end and verify that its creation should be triggered only onceconsole.log
in both theBrowseByMetadataComponent
'supdatePage
&updatePageWithItems
and verify that on first page load it's only called once and it's also only called once when switching the sort order/page sizeChecklist
main
branch of code (unless it is a backport or is fixing an issue specific to an older branch).npm run lint
npm run check-circ-deps
)package.json
), I've made sure their licenses align with the DSpace BSD License based on the Licensing of Contributions documentation.