80 lines
2.7 KiB
JavaScript
80 lines
2.7 KiB
JavaScript
import { i18n } from 'arm-common';
|
|
import agui from 'arm-gui';
|
|
import React, { useCallback, useMemo } from 'react';
|
|
import { connect } from 'react-redux';
|
|
|
|
|
|
const selectorName = 'stub-gui-alive-status-message';
|
|
|
|
export default function AliveStatusMessage(props) {
|
|
const { aliveStatus } = props;
|
|
|
|
const reload = useCallback(() => {
|
|
location.reload();
|
|
}, [history])
|
|
|
|
const showMessage = !aliveStatus.application || !aliveStatus.session;
|
|
|
|
const text = useMemo(() => {
|
|
if (!aliveStatus.session) {
|
|
return {
|
|
header: i18n(`CMA.ALIVE_STATUS.SESSION_EXPIRED`, 'Sessione scaduta'),
|
|
messages: [
|
|
i18n(`CMA.ALIVE_STATUS.SESSION_EXPIRED.MSG.USER_DISCONNECTED`, 'Utente disconnesso.'),
|
|
i18n(`CMA.ALIVE_STATUS.SESSION_EXPIRED.MSG`, 'Per riconnettersi premere il tasto "Ricarica" oppure ricaricare la pagina.')
|
|
]
|
|
};
|
|
}
|
|
return {
|
|
header: i18n(`CMA.ALIVE_STATUS.APPLICATION_DOWN`, 'Applicazione non attiva'),
|
|
messages: [
|
|
i18n(`CMA.ALIVE_STATUS.APPLICATION_DOWN.NOT_AVAILABLE`, 'Applicazione momentaneamente non disponibile.'),
|
|
i18n(`CMA.ALIVE_STATUS.APPLICATION_DOWN.MSG`, 'La preghiamo di contattare l\'amministratore, oppure ricaricare la pagina.')
|
|
]
|
|
};
|
|
}, [aliveStatus]);
|
|
|
|
return (
|
|
<agui.PopupDialog
|
|
show={showMessage}
|
|
className={selectorName}
|
|
addBackDrop
|
|
onClose={reload}
|
|
>
|
|
<agui.PopupDialog.Header>
|
|
{text.header}
|
|
</agui.PopupDialog.Header>
|
|
|
|
<agui.PopupDialog.Body>
|
|
<p>
|
|
{text.messages.map((message, index) => (
|
|
index === text.messages.length - 1 ?
|
|
<React.Fragment key={`${selectorName}-${index}`}>{message}</React.Fragment> :
|
|
<React.Fragment key={`${selectorName}-${index}`}>
|
|
{message}
|
|
|
|
<br />
|
|
</React.Fragment>
|
|
))}
|
|
</p>
|
|
</agui.PopupDialog.Body>
|
|
|
|
<agui.PopupDialog.Footer>
|
|
<div style={{ marginLeft: 'auto' }} />
|
|
|
|
<agui.aButton
|
|
bs='primary'
|
|
onClick={reload}
|
|
>
|
|
{i18n(`CMA.SESSION_EXPIRED.RELOAD`, 'Ricarica')}
|
|
</agui.aButton>
|
|
</agui.PopupDialog.Footer>
|
|
</agui.PopupDialog>
|
|
);
|
|
}
|
|
|
|
const mapStateToProps = (state) => ({
|
|
aliveStatus: state.account.aliveStatus
|
|
})
|
|
|
|
AliveStatusMessage = connect(mapStateToProps)(AliveStatusMessage); |