191 lines
5.7 KiB
JavaScript
191 lines
5.7 KiB
JavaScript
import update from 'immutability-helper';
|
|
|
|
import { AppConstants } from '../constants/AppConstants.js';
|
|
import { EnumAccountActions } from '../ui/account/AccountActions.js';
|
|
import { EnumAppActions } from './AppActions.js';
|
|
|
|
|
|
const initialState = {
|
|
locate: AppConstants.DEFAULT_LANG,
|
|
listOfNotify: null,
|
|
jsessionId: null,
|
|
|
|
environment: null,
|
|
isSSO: false,
|
|
serverid: null,
|
|
|
|
loadingStack: 0,
|
|
loadingState: 'hide',
|
|
|
|
authorizations: {},
|
|
|
|
domini: {},
|
|
dominiLoaded: false,
|
|
|
|
i18nlabels: {},
|
|
i18nlabelsLoaded: true, // TODO riportare a false e nel loading ri-set to true
|
|
|
|
opzioni: {},
|
|
opzioniLoaded: false,
|
|
|
|
loggedOut: false,
|
|
versionInformation: null,
|
|
debugObj: null,
|
|
showPopUp: false,
|
|
|
|
alog: null,
|
|
showAlogPopup: false,
|
|
|
|
ritardoCaricamentoFlussi: false
|
|
};
|
|
|
|
const app = (state, action) => {
|
|
if (typeof state === 'undefined') {
|
|
return initialState
|
|
}
|
|
|
|
let notifyCollection = null;
|
|
|
|
switch (action.type) {
|
|
|
|
case EnumAccountActions.LOGIN_SUCCESS:
|
|
case EnumAccountActions.SSO:
|
|
|
|
let authorizations = action.authorizations;
|
|
let jsessionId = action.jsessionId;
|
|
let environment = null;
|
|
|
|
let isSSO = false;
|
|
|
|
if (action.type === EnumAccountActions.SSO) {
|
|
isSSO = action.datiUtente.userId !== null && action.datiUtente.userId !== undefined;
|
|
}
|
|
|
|
if (action.datiUtente) {
|
|
authorizations = action.datiUtente.authorizations;
|
|
jsessionId = action.datiUtente.jsessionId;
|
|
environment = action.datiUtente.environment;
|
|
}
|
|
|
|
if (action.user) {
|
|
authorizations = action.user.authorizations;
|
|
jsessionId = action.user.jsessionId;
|
|
}
|
|
|
|
let authMap = {};
|
|
if (authorizations) {
|
|
authorizations.forEach(element => {
|
|
authMap[element] = element;
|
|
});
|
|
}
|
|
|
|
return update(state, {
|
|
authorizations: { $set: authMap },
|
|
jsessionId: { $set: jsessionId },
|
|
environment: { $set: environment },
|
|
isSSO: { $set: isSSO },
|
|
listOfNotify: { $set: null }
|
|
});
|
|
|
|
case EnumAccountActions.LOGOUT:
|
|
return update(state, {
|
|
loggedOut: { $set: true },
|
|
datiUtente: { $set: {} }
|
|
});
|
|
|
|
|
|
case EnumAppActions.NOTIFY_MESSAGE_ADD:
|
|
if (state.listOfNotify === null) {
|
|
notifyCollection = new Map();
|
|
} else {
|
|
//devo clonare la lista altrimenti non vengono intercettati i cambiamenti
|
|
notifyCollection = new Map(state.listOfNotify);
|
|
}
|
|
|
|
if (action.messageId === null || action.messageId === undefined) {
|
|
action.messageId = new Date().getTime();
|
|
}
|
|
|
|
notifyCollection.set(Number(action.messageId), {
|
|
message: action.message,
|
|
messageType: action.messageType,
|
|
messageId: action.messageId
|
|
});
|
|
|
|
return update(state, { listOfNotify: { $set: notifyCollection } });
|
|
|
|
case EnumAppActions.NOTIFY_MESSAGE_DELETE:
|
|
//devo clonare la lista altrimenti non vengono intercettati i cambiamenti
|
|
notifyCollection = new Map(state.listOfNotify);
|
|
notifyCollection.delete(action.messageId);
|
|
|
|
return update(state, { listOfNotify: { $set: notifyCollection } });
|
|
|
|
case EnumAppActions.NOTIFY_MESSAGE_CLEAR:
|
|
return update(state, { listOfNotify: { $set: null } });
|
|
|
|
case EnumAppActions.LOAD_DOMINI:
|
|
const domini = update(state.domini, { $merge: action.domini });
|
|
|
|
return update(state, {
|
|
domini: { $set: domini },
|
|
dominiLoaded: { $set: true }
|
|
});
|
|
|
|
case EnumAppActions.LOAD_OPZIONI:
|
|
const opzioni = update(state.opzioni, { $merge: action.opzioni });
|
|
|
|
return update(state, {
|
|
opzioni: { $set: opzioni },
|
|
opzioniLoaded: { $set: true }
|
|
});
|
|
|
|
case EnumAppActions.LOAD_I18N:
|
|
return update(state, {
|
|
i18nlabels: { $merge: action.i18nlabels }
|
|
});
|
|
|
|
case EnumAppActions.WINDOW_WIDTH_CHANGED:
|
|
return update(state, { deviceSize: { $set: action.deviceSize } });
|
|
|
|
case EnumAppActions.LOADER_SHOW:
|
|
if (state.loadingState === 'show') {
|
|
return update(state, { loadingStack: { $set: state.loadingStack + 1 } });
|
|
}
|
|
|
|
return update(state, {
|
|
loadingState: { $set: "show" },
|
|
loadingStack: { $set: 1 }
|
|
});
|
|
|
|
case EnumAppActions.LOADER_HIDE:
|
|
if (state.loadingState === 'hide') {
|
|
return update(state, {
|
|
loadingState: { $set: "hide" },
|
|
loadingStack: { $set: 0 }
|
|
});
|
|
}
|
|
|
|
if (state.loadingStack > 1) {
|
|
return update(state, {
|
|
loadingStack: { $set: state.loadingStack - 1 }
|
|
});
|
|
}
|
|
|
|
return update(state, {
|
|
loadingState: { $set: "hide" },
|
|
loadingStack: { $set: 0 }
|
|
});
|
|
|
|
case EnumAppActions.LOCATE_CHANGE:
|
|
return update(state, { locate: { $set: action.locate } });
|
|
|
|
case EnumAppActions.LOADING_DELAY_STREAMS:
|
|
return update(state, { ritardoCaricamentoFlussi: { $set: action.ritardoCaricamentoFlussi } });
|
|
|
|
default:
|
|
return state;
|
|
}
|
|
}
|
|
|
|
export default app; |