We do this so we can persist the login info to local storage, but
still keep the encryption key safe.
This version will fails if you clear the session storage. This will be
fixed in the next commit.
The reason why we need it is that we don't have a concept of etag for
journal fetching, which means we were setting the store on each fetch
causing everything that depends on the journals to invalidate.
This triggers a bug that causes the entries not to refresh if the
journals haven't changed.
There were a couple of bugs there:
1. The store was reset while fetching/error because the payload was
empty/error.
2. The error status wasn't reset after for successful fetches that
follow failed ones.