import { tassign } from 'tassign'; import { IItemTypes} from '../models/item.types'; import { IListItem } from '../models/list.item'; import { IUser } from '../models/user'; import * as appCommonActions from '../actions/app-common.actions'; import { createSelector, createFeatureSelector, ActionReducerMap } from '@ngrx/store'; import { MODULE_NAME } from '../module-name'; export interface State { openedModalName: string, initialized: boolean, rootItems: IListItem[], itemTypes: IItemTypes, user:IUser, fullScreen: boolean, routeLoading:boolean } export const initialState: State = { openedModalName: null, initialized: false, rootItems: [], itemTypes: {}, user:null, fullScreen: true, routeLoading: false } export function reducer(state = initialState, action: appCommonActions.Actions ): State { switch (action.type) { case appCommonActions.INITUSERSUCCESS: { let a = action as appCommonActions.InitUserSuccess; return tassign(state, { user: a.user }); } case appCommonActions.INITROOTSUCCESS: { let a = action as appCommonActions.InitRootSuccess; return tassign(state, { rootItems:a.items}); } case appCommonActions.OPENMODAL: { return tassign(state, { openedModalName: action.modalName }); } case appCommonActions.CLOSEMODAL: { return tassign(state, { openedModalName: null }); } case appCommonActions.INITIALIZED: { return tassign(state, { initialized: true }); } case appCommonActions.LOADITEMTYPESSUCCESS: { let a = action as appCommonActions.LoadItemTypesSuccess; return tassign(state, { itemTypes: a.itemTypes }); } case appCommonActions.FULLSCREEN: { return tassign(state, { fullScreen:true }); } case appCommonActions.SHOWNAVBAR: { return tassign(state, { fullScreen: false }); } case appCommonActions.STARTROUTELOADING: { return tassign(state, { routeLoading: true }); } case appCommonActions.ENDROUTELOADING: { return tassign(state, { routeLoading: false }); } default: { return state; } } } export const getOpenedModalName = (state: State) => state.openedModalName; export const getInitialized = (state: State) => state.initialized; export const getItemTypes = (state: State) => state.itemTypes; export const getRootItems = (state: State) => state.rootItems; export const getFullScreen = (state: State) => state.fullScreen; export const getRouteLoading = (state: State) => state.routeLoading; export const selectAppCommonState = createFeatureSelector(MODULE_NAME); export const selectOpenedModalName = createSelector(selectAppCommonState, getOpenedModalName); export const selectGetInitialized = createSelector(selectAppCommonState, getInitialized); export const selectGetItemTypes = createSelector(selectAppCommonState, getItemTypes); export const selectGetRootItems = createSelector(selectAppCommonState, getRootItems); export const selectGetFullScreen = createSelector(selectAppCommonState, getFullScreen); export const selectGetRouteLoading = createSelector(selectAppCommonState, getRouteLoading);