mirror of
https://github.com/trezor/trezor-wallet
synced 2024-11-24 09:18:09 +00:00
updated SessionStorage actions
This commit is contained in:
parent
88d2a65340
commit
1846d936e2
@ -4,47 +4,56 @@
|
|||||||
import type { State as SendFormState } from 'reducers/SendFormReducer';
|
import type { State as SendFormState } from 'reducers/SendFormReducer';
|
||||||
import type {
|
import type {
|
||||||
ThunkAction,
|
ThunkAction,
|
||||||
|
PayloadAction,
|
||||||
GetState,
|
GetState,
|
||||||
Dispatch,
|
Dispatch,
|
||||||
} from 'flowtype';
|
} from 'flowtype';
|
||||||
|
|
||||||
const PREFIX: string = 'trezor:draft-tx:';
|
const TX_PREFIX: string = 'trezor:draft-tx:';
|
||||||
|
|
||||||
export const save = (): ThunkAction => (dispatch: Dispatch, getState: GetState): void => {
|
export const saveDraftTransaction = (): ThunkAction => (dispatch: Dispatch, getState: GetState): void => {
|
||||||
if (typeof window.localStorage === 'undefined') return;
|
if (typeof window.localStorage === 'undefined') return;
|
||||||
|
|
||||||
const location = getState().router.location.pathname;
|
|
||||||
const state = getState().sendForm;
|
const state = getState().sendForm;
|
||||||
if (!state.untouched) {
|
if (state.untouched) return;
|
||||||
try {
|
|
||||||
window.sessionStorage.setItem(`${PREFIX}${location}`, JSON.stringify(state));
|
const location = getState().router.location.pathname;
|
||||||
} catch (error) {
|
try {
|
||||||
console.error(`Saving sessionStorage error: ${error}`);
|
// save state as it is
|
||||||
}
|
// "loadDraftTransaction" will do the validation
|
||||||
|
window.sessionStorage.setItem(`${TX_PREFIX}${location}`, JSON.stringify(state));
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Saving sessionStorage error: ${error}`);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const load = (location: string): ?SendFormState => {
|
export const loadDraftTransaction = (): PayloadAction<?SendFormState> => (dispatch: Dispatch, getState: GetState): ?SendFormState => {
|
||||||
if (typeof window.localStorage === 'undefined') return;
|
if (typeof window.localStorage === 'undefined') return null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const value: string = window.sessionStorage.getItem(`${PREFIX}${location}`);
|
const location = getState().router.location.pathname;
|
||||||
|
const value: string = window.sessionStorage.getItem(`${TX_PREFIX}${location}`);
|
||||||
const state: ?SendFormState = JSON.parse(value);
|
const state: ?SendFormState = JSON.parse(value);
|
||||||
if (state && state.address === '' && (state.amount === '' || state.amount === '0')) {
|
if (state) {
|
||||||
window.sessionStorage.removeItem(`${PREFIX}${location}`);
|
// decide if draft is valid and should be returned
|
||||||
return;
|
// ignore this draft if has any error
|
||||||
|
if (Object.keys(state.errors).length > 0) {
|
||||||
|
window.sessionStorage.removeItem(`${TX_PREFIX}${location}`);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return state;
|
||||||
}
|
}
|
||||||
return state;
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`Loading sessionStorage error: ${error}`);
|
console.error(`Loading sessionStorage error: ${error}`);
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const clear = (): ThunkAction => (dispatch: Dispatch, getState: GetState): void => {
|
export const clear = (): ThunkAction => (dispatch: Dispatch, getState: GetState): void => {
|
||||||
if (typeof window.localStorage === 'undefined') return;
|
if (typeof window.localStorage === 'undefined') return;
|
||||||
const location = getState().router.location.pathname;
|
const location = getState().router.location.pathname;
|
||||||
try {
|
try {
|
||||||
window.sessionStorage.removeItem(`${PREFIX}${location}`);
|
window.sessionStorage.removeItem(`${TX_PREFIX}${location}`);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`Clearing sessionStorage error: ${error}`);
|
console.error(`Clearing sessionStorage error: ${error}`);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user