Summary Table
Categories |
Total Count |
PII |
0 |
URL |
0 |
DNS |
0 |
EKL |
0 |
IP |
0 |
PORT |
0 |
VsID |
0 |
CF |
0 |
AI |
0 |
VPD |
0 |
PL |
0 |
Other |
0 |
File Content
import { UserPreferences, UserIdentity, AppData } from '../models/sessionModels';
import { SessionActions, SessionActionTypes } from '../actions/session.action';
import { SessionState } from '../models/state';
import * as init from './init';
export function sessionReducer(state: SessionState = init.initialSessionState, action: SessionActions): SessionState {
switch ( action.type ) {
// set the current user view (orders, patient, etc)
case SessionActionTypes.SetView: {
return {...state, currentView: <string>action.payload};
}
// set user preferences
case SessionActionTypes.SetPreferences: {
return {...state, viewPrefs: <UserPreferences>action.payload};
}
// set the active identity for the user, for determining the default site to use for
// VISTA-specific data calls (orders)
case SessionActionTypes.SetActiveIdentity: {
return {...state, activeIdentity: <UserIdentity>action.payload};
}
// set the VISTA identities provisioned for the user
case SessionActionTypes.SetAvailableIdentities: {
return {...state, availableIdentities: action.payload};
}
// add a message to the queue for user notification. only add if same message isn't already present (same message + title)
case SessionActionTypes.AddUIMessage: {
const exists = state.messages.findIndex(itm => {
return itm.body === action.payload.body && itm.title === action.payload.title;
});
if (exists > -1) {
return {...state};
} else {
return {...state, messages: [...state.messages, action.payload]};
}
}
// remove a message from the notification queue
case SessionActionTypes.RemoveUIMessage: {
return {...state, messages: state.messages.filter((el, idx) => idx !== action.payload)};
}
case SessionActionTypes.AddPendingRequest: {
return {...state, pendingRequests: [...state.pendingRequests, action.payload]};
}
case SessionActionTypes.RemovePendingRequest: {
const idx = state.pendingRequests.indexOf(action.payload);
if (idx >= 0) {
return {...state, pendingRequests: [...state.pendingRequests.slice(0, idx), ...state.pendingRequests.slice(idx + 1)]};
} else {
return {...state };
}
}
case SessionActionTypes.SetAppInfo: {
return {...state, appInfo: <AppData>action.payload };
}
default: {
return {...state};
}
}
}