2017-08-10 00:11:35 +05:30
|
|
|
// @flow
|
2016-07-29 23:25:19 +05:30
|
|
|
import React from 'react';
|
2016-11-12 05:03:12 +05:30
|
|
|
import { FormattedMessage as Message } from 'react-intl';
|
2016-11-12 14:35:38 +05:30
|
|
|
import { IntlProvider } from 'components/i18n';
|
2018-05-02 23:52:13 +05:30
|
|
|
import logger from 'services/logger';
|
2016-11-12 05:03:12 +05:30
|
|
|
import appInfo from 'components/auth/appInfo/AppInfo.intl.json';
|
|
|
|
|
|
|
|
import styles from './styles.scss';
|
2017-08-10 00:11:35 +05:30
|
|
|
import BoxesField from './BoxesField';
|
|
|
|
import messages from './BSoD.intl.json';
|
2016-11-12 05:03:12 +05:30
|
|
|
|
2016-11-12 14:35:38 +05:30
|
|
|
// TODO: probably it is better to render this view from the App view
|
|
|
|
// to remove dependencies from store and IntlProvider
|
2018-05-02 23:52:13 +05:30
|
|
|
export default class BSoD extends React.Component<{
|
|
|
|
store: Object
|
|
|
|
}, {
|
|
|
|
lastEventId?: string,
|
|
|
|
}> {
|
|
|
|
state = {};
|
|
|
|
|
|
|
|
componentDidMount() {
|
|
|
|
// poll for event id
|
|
|
|
const timer = setInterval(() => {
|
|
|
|
if (!logger.getLastEventId()) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
clearInterval(timer);
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
lastEventId: logger.getLastEventId()
|
|
|
|
});
|
|
|
|
}, 500);
|
|
|
|
}
|
|
|
|
|
|
|
|
render() {
|
|
|
|
const {store} = this.props;
|
|
|
|
const {lastEventId} = this.state;
|
|
|
|
|
|
|
|
let emailUrl = 'mailto:support@ely.by';
|
|
|
|
|
|
|
|
if (lastEventId) {
|
|
|
|
emailUrl += `?subject=Bug report for #${lastEventId}`;
|
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<IntlProvider store={store}>
|
|
|
|
<div className={styles.body}>
|
|
|
|
<canvas className={styles.canvas}
|
|
|
|
ref={(el: ?HTMLCanvasElement) => el && new BoxesField(el)}
|
|
|
|
/>
|
|
|
|
|
|
|
|
<div className={styles.wrapper}>
|
|
|
|
<div className={styles.title}>
|
|
|
|
<Message {...appInfo.appName} />
|
|
|
|
</div>
|
|
|
|
<div className={styles.lineWithMargin}>
|
|
|
|
<Message {...messages.criticalErrorHappened} />
|
|
|
|
</div>
|
|
|
|
<div className={styles.line}>
|
|
|
|
<Message {...messages.reloadPageOrContactUs} />
|
|
|
|
</div>
|
|
|
|
<a href={emailUrl} className={styles.support}>
|
|
|
|
support@ely.by
|
|
|
|
</a>
|
|
|
|
<div className={styles.easterEgg}>
|
|
|
|
<Message {...messages.alsoYouCanInteractWithBackground}/>
|
|
|
|
</div>
|
2016-11-12 14:35:38 +05:30
|
|
|
</div>
|
2016-11-12 05:03:12 +05:30
|
|
|
</div>
|
2018-05-02 23:52:13 +05:30
|
|
|
</IntlProvider>
|
|
|
|
);
|
|
|
|
}
|
2016-07-29 23:25:19 +05:30
|
|
|
}
|