fix: silently fail when we cannot get visitorId from matomo for bitsream download #5001
+123
−9
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.
References
Fixes Bitstream downloads fail when script blockers are active on sites with Matomo integration #4991
Description
This fixes bitstream download when Matomo is enabled and user disabled Matomo script.
Matomo integration enqueues tasks to
window._paqand then Matomo sdk itself pop tasks from queue and executes them.When user has any adblocker the task will never pop from the queue and process, thus promise will never get resolved or rejected. It will hang at this line of code exactly:
src/app/statistics/matomo.service.tsThis does not happen for built-in tracking of
ng-matomo-client- perhaps we should be more defensive and timeout with catchError for appendVistorId method rather than only checking whenever script got loaded correctly.Instructions for Reviewers
Please add a more detailed description of the changes made by your PR. At a minimum, providing a bulleted list of changes in your PR is helpful to reviewers.
List of changes in this PR:
isMatomoScriptLoaded$in Matomo service to check whenever script gets loaded, errors out or hangs with loading statusngx-matomo-clientwith Matomo service to use custom script factory and usemarkAsLoadedandmarkAsErrorto set proper state respectivelySteps to test this PR:
Environment:
initmethod of MatomoService we need to comment outenvironment.productionto allow to initialize trackerCase 1. Firefox with Ublock Origin enabled
trackerIdwill not be added to bitstream resourceCase 2. Firefox with Ublock Origin disabled
trackerIdwill be added to bitstream resourceChecklist
This checklist provides a reminder of what we are going to look for when reviewing your PR. You do not need to complete this checklist prior creating your PR (draft PRs are always welcome).
However, reviewers may request that you complete any actions in this list if you have not done so. If you are unsure about an item in the checklist, don't hesitate to ask. We're here to help!
mainbranch of code (unless it is a backport or is fixing an issue specific to an older branch).npm run lintnpm 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.