• Robert Knight's avatar
    Initialize route state in store before fetching groups · 25358a00
    Robert Knight authored
    The behavior of `GroupsService.load` varies depending on whether the current
    route is the sidebar or not. During sidebar startup, `GroupsService.load` was
    called before `RouterService.sync`. As a result the route was `null` during the
    initial call to `GroupsService._loadGroupsForUserAndDocument` and hence the
    service did not execute the sidebar-specific code path to wait for the document
    URI to become known at that point.
    
    During the first `GroupsService._loadGroupsForUserAndDocument` call,
    `_setupAutoReload` would set up a watcher that would react to changes in
    `store.mainURI()`. This watcher would fire after the main guest frame connects.
    Depending on when that happens, requests from the initial `GroupsService.load`
    request could still be in-flight. If the second set of groups API calls
    completed first, followed by the first set of groups API calls, then the final
    set of loaded groups might reflect the _first_ call to `GroupsService.load`,
    where the document URI was not used (because the route was unknown).
    
    This commit fixes the issue by re-arranging the sidebar startup sequence to
    initialize the router service before other services.
    
    Fixes https://github.com/hypothesis/support/issues/79
    25358a00
Name
Last commit
Last update
.github Loading commit data...
.yarn Loading commit data...
bin Loading commit data...
dev-server Loading commit data...
docs Loading commit data...
embedding-examples Loading commit data...
images Loading commit data...
requirements Loading commit data...
scripts Loading commit data...
src Loading commit data...
.babelrc Loading commit data...
.eslintignore Loading commit data...
.eslintrc Loading commit data...
.gitignore Loading commit data...
.npmignore Loading commit data...
.prettierignore Loading commit data...
.python-version Loading commit data...
.readthedocs.yaml Loading commit data...
.yarnrc.yml Loading commit data...
HACKING.md Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
codecov.yml Loading commit data...
gulpfile.js Loading commit data...
package.json Loading commit data...
rollup-boot.config.js Loading commit data...
rollup-tests.config.js Loading commit data...
rollup.config.js Loading commit data...
tailwind-annotator.config.js Loading commit data...
tailwind-sidebar.config.js Loading commit data...
tailwind.config.js Loading commit data...
tox.ini Loading commit data...
tsconfig.json Loading commit data...
yarn.lock Loading commit data...