add redux support for setting local currency

pull/448/head
slowbackspace 5 years ago
parent 8f55a04931
commit c9d7fc8ea9

@ -57,6 +57,7 @@ const KEY_TOKENS: string = `${STORAGE_PATH}tokens`;
const KEY_PENDING: string = `${STORAGE_PATH}pending`; const KEY_PENDING: string = `${STORAGE_PATH}pending`;
const KEY_BETA_MODAL: string = '/betaModalPrivacy'; // this key needs to be compatible with "parent" (old) wallet const KEY_BETA_MODAL: string = '/betaModalPrivacy'; // this key needs to be compatible with "parent" (old) wallet
const KEY_LANGUAGE: string = `${STORAGE_PATH}language`; const KEY_LANGUAGE: string = `${STORAGE_PATH}language`;
const KEY_LOCAL_CURRENCY: string = `${STORAGE_PATH}localCurrency`;
// https://github.com/STRML/react-localstorage/blob/master/react-localstorage.js // https://github.com/STRML/react-localstorage/blob/master/react-localstorage.js
// or // or
@ -276,6 +277,11 @@ const loadStorageData = (): ThunkAction => (dispatch: Dispatch): void => {
} else { } else {
dispatch(WalletActions.fetchLocale(l10nUtils.getInitialLocale())); dispatch(WalletActions.fetchLocale(l10nUtils.getInitialLocale()));
} }
const localCurrency: ?string = storageUtils.get(TYPE, KEY_LOCAL_CURRENCY);
if (localCurrency) {
dispatch(WalletActions.setLocalCurrency(JSON.parse(localCurrency)));
}
}; };
export const loadData = (): ThunkAction => (dispatch: Dispatch, getState: GetState): void => { export const loadData = (): ThunkAction => (dispatch: Dispatch, getState: GetState): void => {
@ -296,3 +302,11 @@ export const setLanguage = (): ThunkAction => (dispatch: Dispatch, getState: Get
const { language } = getState().wallet; const { language } = getState().wallet;
storageUtils.set(TYPE, KEY_LANGUAGE, JSON.stringify(language)); storageUtils.set(TYPE, KEY_LANGUAGE, JSON.stringify(language));
}; };
export const setLocalCurrency = (): ThunkAction => (
dispatch: Dispatch,
getState: GetState
): void => {
const { localCurrency } = getState().wallet;
storageUtils.set(TYPE, KEY_LOCAL_CURRENCY, JSON.stringify(localCurrency));
};

@ -58,6 +58,10 @@ export type WalletAction =
type: typeof WALLET.SET_LANGUAGE, type: typeof WALLET.SET_LANGUAGE,
locale: string, locale: string,
messages: { [string]: string }, messages: { [string]: string },
}
| {
type: typeof WALLET.SET_LOCAL_CURRENCY,
localCurrency: string,
}; };
export const init = (): ThunkAction => (dispatch: Dispatch): void => { export const init = (): ThunkAction => (dispatch: Dispatch): void => {
@ -96,6 +100,11 @@ export const fetchLocale = (locale: string): ThunkAction => (dispatch: Dispatch)
}); });
}; };
export const setLocalCurrency = (localCurrency: string): WalletAction => ({
type: WALLET.SET_LOCAL_CURRENCY,
localCurrency: localCurrency.toLowerCase(),
});
// This method will be called after each DEVICE.CONNECT action // This method will be called after each DEVICE.CONNECT action
// if connected device has different "passphrase_protection" settings than saved instances // if connected device has different "passphrase_protection" settings than saved instances
// all saved instances will be removed immediately inside DevicesReducer // all saved instances will be removed immediately inside DevicesReducer

@ -17,3 +17,4 @@ export const CLEAR_UNAVAILABLE_DEVICE_DATA: 'wallet__clear_unavailable_device_da
export const TOGGLE_SIDEBAR: 'wallet__toggle_sidebar' = 'wallet__toggle_sidebar'; export const TOGGLE_SIDEBAR: 'wallet__toggle_sidebar' = 'wallet__toggle_sidebar';
export const SET_LANGUAGE: 'wallet__set_language' = 'wallet__set_language'; export const SET_LANGUAGE: 'wallet__set_language' = 'wallet__set_language';
export const SET_LOCAL_CURRENCY: 'wallet__set_local_currency' = 'wallet__set_local_currency';

@ -13,6 +13,7 @@ type State = {
ready: boolean, ready: boolean,
online: boolean, online: boolean,
language: string, language: string,
localCurrency: string,
messages: { [string]: string }, messages: { [string]: string },
dropdownOpened: boolean, dropdownOpened: boolean,
showBetaDisclaimer: boolean, showBetaDisclaimer: boolean,
@ -28,6 +29,7 @@ const initialState: State = {
ready: false, ready: false,
online: navigator.onLine, online: navigator.onLine,
language: 'en', language: 'en',
localCurrency: 'usd',
messages: {}, messages: {},
dropdownOpened: false, dropdownOpened: false,
firstLocationChange: true, firstLocationChange: true,
@ -129,6 +131,12 @@ export default function wallet(state: State = initialState, action: Action): Sta
messages: action.messages ? action.messages : state.messages, messages: action.messages ? action.messages : state.messages,
}; };
case WALLET.SET_LOCAL_CURRENCY:
return {
...state,
localCurrency: action.localCurrency,
};
default: default:
return state; return state;
} }

@ -25,6 +25,10 @@ const LocalStorageService: Middleware = (api: MiddlewareAPI) => (next: Middlewar
case WALLET.SET_LANGUAGE: case WALLET.SET_LANGUAGE:
api.dispatch(LocalStorageActions.setLanguage()); api.dispatch(LocalStorageActions.setLanguage());
break; break;
case WALLET.SET_LOCAL_CURRENCY:
api.dispatch(LocalStorageActions.setLocalCurrency());
break;
// first time saving // first time saving
case CONNECT.REMEMBER: case CONNECT.REMEMBER:
api.dispatch(LocalStorageActions.save()); api.dispatch(LocalStorageActions.save());

Loading…
Cancel
Save