• 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
.github Loading commit data...
bin Loading commit data...
docs Loading commit data...
embedding-examples Loading commit data...
images Loading commit data...
scripts Loading commit data...
src Loading commit data...
.babelrc Loading commit data...
.dockerignore Loading commit data...
.eslintignore Loading commit data...
.eslintrc Loading commit data...
.gitignore Loading commit data...
.npmignore Loading commit data...
.npmrc Loading commit data...
.prettierignore Loading commit data...
.prettierrc Loading commit data...
.python-version Loading commit data...
.travis.yml Loading commit data...
CODE_OF_CONDUCT Loading commit data...
Dockerfile Loading commit data...
Jenkinsfile Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
gulpfile.js Loading commit data...
package.json Loading commit data...
requirements-dev.in Loading commit data...
tox.ini Loading commit data...
yarn.lock Loading commit data...