ignite-boilerplate-andross-typescript
Version:
Customized version of ignite Andross With TypeScript Support.
44 lines (37 loc) • 1.25 kB
text/typescript
import {colorScheme} from "../../Themes/Colors";
import I18n from "../../I18n/index";
import { REHYDRATE } from 'redux-persist';
import * as Immutable from "seamless-immutable";
import {Reducer} from "redux";
import {AppSettingsState} from "./Types";
const DEFAULT_LOCALE = 'en';
export const INITIAL_STATE = Immutable({
isDarkMode:false,
locale: DEFAULT_LOCALE,
isRtl:isRtlLocale(DEFAULT_LOCALE),
colorScheme:colorScheme(false)
});
export const reducer : Reducer<AppSettingsState> = (state:AppSettingsState=INITIAL_STATE, action) => {
switch (action.type) {
case 'toggle_dark_mode':
return {...state,isDarkMode:!state.isDarkMode,colorScheme:colorScheme(!state.isDarkMode)};
case 'toggle_direction':
return {...state,isRtl:!state.isRtl};
case 'select_locale':
I18n.locale=action.payload;
return {...state,
locale:action.payload,
isRtl:isRtlLocale(action.payload)
};
case REHYDRATE:
I18n.locale = action.payload.appSettings.locale;
return {...state,...action.payload.appSettings};
default:
I18n.locale = state.locale;
return {...state};
}
};
function isRtlLocale (locale) {
const rtlLocales = ['fa','ar'];
return !!rtlLocales.includes(locale);
}