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};
}
}
}