periodicjs.ext.reactapp
Version:
281 lines (219 loc) • 11.4 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _assign = require('babel-runtime/core-js/object/assign');
var _assign2 = _interopRequireDefault(_assign);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _promise = require('babel-runtime/core-js/promise');
var _promise2 = _interopRequireDefault(_promise);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reBulma = require('re-bulma');
var _serverSideReactNative = require('../../util/server-side-react-native');
var _moment = require('moment');
var _moment2 = _interopRequireDefault(_moment);
var _styles = require('../../styles');
var _styles2 = _interopRequireDefault(_styles);
var _constants = require('../../constants');
var _constants2 = _interopRequireDefault(_constants);
var _AppHeader = require('../AppHeader');
var _AppHeader2 = _interopRequireDefault(_AppHeader);
var _AppFooter = require('../AppFooter');
var _AppFooter2 = _interopRequireDefault(_AppFooter);
var _AppSidebar = require('../AppSidebar');
var _AppSidebar2 = _interopRequireDefault(_AppSidebar);
var _FloatingNav = require('../AppSidebar/FloatingNav');
var _FloatingNav2 = _interopRequireDefault(_FloatingNav);
var _log = require('../AppSectionLoading/log');
var _log2 = _interopRequireDefault(_log);
var _SocketHelper = require('./SocketHelper');
var _overlay = require('../AppSectionLoading/overlay');
var _overlay2 = _interopRequireDefault(_overlay);
var _AppOverlay = require('../AppOverlay');
var _AppOverlay2 = _interopRequireDefault(_AppOverlay);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// let once = true;
// import utilities from '../../util';
var MainApp = function (_Component) {
(0, _inherits3.default)(MainApp, _Component);
function MainApp(props /*, context*/) {
(0, _classCallCheck3.default)(this, MainApp);
var _this = (0, _possibleConstructorReturn3.default)(this, (MainApp.__proto__ || (0, _getPrototypeOf2.default)(MainApp)).call(this, props));
_this.state = props;
_SocketHelper.initSockets.call(_this, { auth: true });
return _this;
}
(0, _createClass3.default)(MainApp, [{
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
// console.log('componentWillReceiveProps nextProps', nextProps);
this.setState(nextProps);
if (document && document.body && document.body.setAttribute) {
document.body.setAttribute('id', encodeURIComponent(nextProps.location.pathname).replace(new RegExp(/%2F|%2/, 'g'), '_'));
}
}
}, {
key: 'componentDidMount',
value: function componentDidMount() {
var _this2 = this;
// if (this.state.settings.use_sockets && once) {
// once = false;
// }
if (this.state.settings.noauth) {
this.props.fetchUnauthenticatedManifest().then(function () {
_this2.props.setUILoadedState(true);
// initSockets.call(this, { auth:false, });
}).catch(function (error) {
_this2.props.errorNotification(error);
_this2.props.setUILoadedState(true);
// initSockets.call(this, { auth:false, });
});
} else {
_promise2.default.all([_serverSideReactNative.AsyncStorage.getItem(_constants2.default.jwt_token.TOKEN_NAME), _serverSideReactNative.AsyncStorage.getItem(_constants2.default.jwt_token.TOKEN_DATA), _serverSideReactNative.AsyncStorage.getItem(_constants2.default.jwt_token.PROFILE_JSON), this.props.fetchMainComponent(), this.props.fetchErrorComponents(), this.props.fetchUnauthenticatedManifest(), _serverSideReactNative.AsyncStorage.getItem(_constants2.default.user.MFA_AUTHENTICATED)]
//AsyncStorage.getItem(constants.async_token.TABBAR_TOKEN),
).then(function (results) {
try {
if (results[results.length - 1] === 'true') {
_this2.props.authenticatedMFA();
}
var jwt_token = results[0];
var jwt_token_data = JSON.parse(results[1]);
var jwt_user_profile = {};
try {
jwt_user_profile = JSON.parse(results[2]);
} catch (e) {
_this2.props.getUserProfile(jwt_token);
_this2.props.initializeAuthenticatedUser(jwt_token, false);
_this2.props.errorNotification(new Error('Invalid User Profile'));
}
if (jwt_token_data && jwt_user_profile) {
var url = '/api/jwt/token';
var response = {};
var json = {
token: jwt_token_data.token,
expires: jwt_token_data.expires,
timeout: jwt_token_data.timeout,
user: jwt_user_profile
};
var currentTime = new Date();
if ((0, _moment2.default)(jwt_token_data.expires).isBefore(currentTime)) {
var expiredTokenError = new Error('Access Token Expired ' + (0, _moment2.default)(jwt_token_data.expires).format('LLLL'));
_this2.props.logoutUser();
throw expiredTokenError;
} else {
_this2.props.saveUserProfile(url, response, json);
_this2.props.initializeAuthenticatedUser(json.token, false);
}
} else if (jwt_token) {
_this2.props.getUserProfile(jwt_token);
_this2.props.initializeAuthenticatedUser(jwt_token, false);
_this2.props.createNotification({ text: 'welcome back', timeout: 4000 });
} else {
console.log('MAIN componentDidMount USER IS NOT LOGGED IN');
}
_this2.props.setUILoadedState(true);
// console.debug('main this.state.user', this.state.user);
// if (socket) {
// console.debug('HAS SOCKET state.user',state.user)
// socket.emit('authentication', {
// user: state.user,
// });
// } else {
// console.debug('NO SOCKET')
// }
// initSockets.call(this, { auth: true, });
// this.props.initUserSocket();
} catch (e) {
_this2.props.errorNotification(e);
// initSockets.call(this, { auth:false, });
// console.error(e)
// console.log(e);
}
}).catch(function (error) {
// console.error(error)
_this2.props.errorNotification(error);
// console.error('MAIN componentDidMount: JWT USER Login Error.', error);
_this2.props.logoutUser();
_this2.props.setUILoadedState(true);
// initSockets.call(this, { auth:false, });
});
}
if (document && document.body && document.body.classList && document.body.classList.add) {
document.body.classList.add('__ra_mc_loaded');
} else if (document && document.body && document.body.className) {
document.body.className = document.body.className += ' __ra_mc_loaded';
}
if (window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf('Trident') !== -1) {
document.body.style.zoom = 1;
}
}
}, {
key: 'render',
value: function render() {
// console.log('this.state', this.state);
var fixedSider = this.state.settings.ui.fixedSidebar ? { position: 'fixed', zIndex: 1000 } : {};
var sidebarColumn = this.state.settings.ui.sidebar.use_floating_nav && this.state.ui.sidebar_is_open ? _react2.default.createElement(_FloatingNav2.default, (0, _extends3.default)({ className: 'reactapp__app_floating_sidebar' }, this.state)) : this.state.ui.sidebar_is_open ? _react2.default.createElement(
_reBulma.Column,
{ className: 'reactapp__app_container_sidebar', size: 'isNarrow', style: (0, _assign2.default)({}, fixedSider, _styles2.default.fullMinHeight, _styles2.default.fullHeight) },
_react2.default.createElement(_AppSidebar2.default, (0, _extends3.default)({ className: 'reactapp__app_sidebar' }, this.state))
) : null;
var headerNav = this.state.settings.ui.initialization.show_header || this.state.user.isLoggedIn ? _react2.default.createElement(_AppHeader2.default, (0, _extends3.default)({ className: 'reactapp__app_header' }, this.state)) : null;
var footerNav = this.state.settings.ui.initialization.show_footer || this.state.user.isLoggedIn ? _react2.default.createElement(_AppFooter2.default, (0, _extends3.default)({ className: 'reactapp__app_footer' }, this.state)) : null;
var overlay = this.props.ui.sidebar_is_open && this.state.settings.ui.initialization.show_sidebar_overlay ? _react2.default.createElement('div', { style: _styles2.default.sidebarOverlay, className: '__ra_show_sidebar_overlay',
onClick: this.props.toggleUISidebar }) : null;
return _react2.default.createElement(
'div',
{ className: 'reactapp__app_div_content' },
_react2.default.createElement(_overlay2.default, { display: !this.state.ui.ui_is_loaded, wrapperstyle: (0, _assign2.default)({}, {
position: 'fixed',
height: '100%',
width: '100%',
top: 0,
bottom: 0,
left: 0,
right: 0,
// opacity:0.8,
backgroundColor: 'rgba(255,255,255,0.8)',
zIndex: 100
}, this.overlayUIWrapperStyle), ui: this.state.ui }),
_react2.default.createElement(_AppOverlay2.default, (0, _extends3.default)({ className: 'reactapp__app_overlay' }, this.state)),
headerNav,
_react2.default.createElement(
'main',
{ style: _styles2.default.fullHeight, className: 'reactapp__main' },
_react2.default.createElement(
_reBulma.Columns,
{ className: 'reactapp__main_container', style: (0, _assign2.default)({}, _styles2.default.fullMinHeight, _styles2.default.fullHeight) },
sidebarColumn,
overlay,
_react2.default.createElement(_log2.default, this.props),
_react2.default.createElement(
_reBulma.Column,
{ className: 'reactapp__main_content', style: _styles2.default.fullMinHeight },
this.state.ui.app_container_ui_is_loaded === false ? null : this.props.children
)
)
),
footerNav
);
}
}]);
return MainApp;
}(_react.Component);
// import AppSectionLoading from '../AppSectionLoading';
MainApp.contextTypes = {
router: _react.PropTypes.object.isRequired
};
exports.default = MainApp;