• 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
..
components Loading commit data...
config Loading commit data...
helpers Loading commit data...
services Loading commit data...
store Loading commit data...
test Loading commit data...
util Loading commit data...
cross-origin-rpc.ts Loading commit data...
index.tsx Loading commit data...
markdown-commands.ts Loading commit data...
media-embedder.ts Loading commit data...
render-markdown.ts Loading commit data...
search-client.ts Loading commit data...
service-context.tsx Loading commit data...
websocket.ts Loading commit data...