You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
// @flow
|
|
|
|
|
|
|
|
import { handleActions, createAction } from 'redux-actions'
|
|
|
|
|
|
|
|
export type ApplicationState = {
|
|
|
|
isLocked?: boolean,
|
|
|
|
}
|
|
|
|
|
|
|
|
const state: ApplicationState = {}
|
|
|
|
|
|
|
|
const handlers = {
|
|
|
|
APPLICATION_SET_DATA: (state, { payload }: { payload: ApplicationState }) => ({
|
|
|
|
...state,
|
|
|
|
...payload,
|
|
|
|
}),
|
|
|
|
}
|
|
|
|
|
|
|
|
// Actions // FIXME why isn't this in actions/*
|
|
|
|
|
|
|
|
export const unlock = createAction('APPLICATION_SET_DATA', () => ({ isLocked: false }))
|
|
|
|
export const lock = createAction('APPLICATION_SET_DATA', () => ({ isLocked: true }))
|
|
|
|
|
|
|
|
// Selectors
|
|
|
|
|
Rework persistence data layer
Closes #1235
This commit introduce a pretty big change on how app data files are
managed. Instead of having multiple `accounts.json`, `settings.json`,
`user.json`, `countervalues.json`, it now store everything in a single
`app.json`. And it does it in an *async* way, so it should prevent some
frame loss.
Migration will be seamless, and will keep `accounts.json` encryption if set.
So no user action is involved.
This changes comes also with some simplification on password handling
(e.g: no more need to store password hash).
/!\ Disclaimer
During development, I ran about a weird issue (~ 3 or 4 times) when my
data was simply "erased" in the file, so back to onboarding, no more settings,
etc. I suspect race/write condition, something with write-file-atomic, but I
didn't managed to reproduce, everytime I tried. Anyway, I feel not 100% confident
with it, so if you guys can test on your side, with your data (with encryption
key or not) it will help a lot!
7 years ago
|
|
|
export const isLocked = (state: Object) => state.application.isLocked === true
|
|
|
|
|
|
|
|
// Exporting reducer
|
|
|
|
|
|
|
|
export default handleActions(handlers, state)
|