• Robert Knight's avatar
    Refactor profile data access in the store · 2ec09cad
    Robert Knight authored
    This PR refactors accessing and updating of profile data from
    `/api/profile` in the store:
    
     - Always access the profile data fetched from `/api/profile` via the
       `store.profile()` selector rather than using
       `store.getState().session...`.
    
     - Move the profile data from the top level of `state.session` into a
       `profile` field (`state.session.profile`)
    
     - Rename `store.updateSession()` to `store.updateProfile()` for
       consistency with the `profile()` selector. The previous name is a
       holdover from when "session" meant "the user's cookie session".
    
    These changes make this store module follow our agreed best practices to
    avoid accessing state directly, rather than via a selector, and will also
    make it easier to add additional session-related state in future which
    is not fetched from `/api/profile`.
    
    One subtle but intended change is that `state.session.profile` is now
    always _replaced_ when the profile is udpated, rather than it being the
    result of merging the previous and current state. The previous behavior
    could introduce subtle bugs where state from a previous login remained
    after switching the user.
    2ec09cad
Name
Last commit
Last update
..
angular-util.js Loading commit data...
annotation-action-bar-test.js Loading commit data...
annotation-body-test.js Loading commit data...
annotation-document-info-test.js Loading commit data...
annotation-header-test.js Loading commit data...
annotation-publish-control-test.js Loading commit data...
annotation-quote-test.js Loading commit data...
annotation-share-control-test.js Loading commit data...
annotation-share-info-test.js Loading commit data...
annotation-test.js Loading commit data...
annotation-user-test.js Loading commit data...
annotation-viewer-content-test.js Loading commit data...
autocomplete-list-test.js Loading commit data...
button-test.js Loading commit data...
excerpt-test.js Loading commit data...
focused-mode-header-test.js Loading commit data...
group-list-item-test.js Loading commit data...
group-list-section-test.js Loading commit data...
group-list-test.js Loading commit data...
help-panel-test.js Loading commit data...
hypothesis-app-test.js Loading commit data...
logged-out-message-test.js Loading commit data...
login-prompt-panel-test.js Loading commit data...
markdown-editor-test.js Loading commit data...
markdown-view-test.js Loading commit data...
menu-item-test.js Loading commit data...
menu-section-test.js Loading commit data...
menu-test.js Loading commit data...
moderation-banner-test.js Loading commit data...
new-note-btn-test.js Loading commit data...
search-input-test.js Loading commit data...
search-status-bar-test.js Loading commit data...
selection-tabs-test.js Loading commit data...
share-annotations-panel-test.js Loading commit data...
share-links-test.js Loading commit data...
sidebar-content-error-test.js Loading commit data...
sidebar-content-test.js Loading commit data...
sidebar-panel-test.js Loading commit data...
slider-test.js Loading commit data...
sort-menu-test.js Loading commit data...
spinner-test.js Loading commit data...
stream-content-test.js Loading commit data...
stream-search-input-test.js Loading commit data...
tag-editor-test.js Loading commit data...
tag-list-test.js Loading commit data...
thread-list-test.js Loading commit data...
thread-test.js Loading commit data...
timestamp-test.js Loading commit data...
toast-messages-test.js Loading commit data...
top-bar-test.js Loading commit data...
tutorial-test.js Loading commit data...
user-menu-test.js Loading commit data...
version-info-test.js Loading commit data...