UNPKG

alm-search-01

Version:

This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).

725 lines (615 loc) 26.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactRouterDom = require("react-router-dom"); var _styles = require("@material-ui/core/styles"); var _recompose = require("recompose"); var _Drawer = _interopRequireDefault(require("@material-ui/core/Drawer")); var _List = _interopRequireDefault(require("@material-ui/core/List")); var _ListItem = _interopRequireDefault(require("@material-ui/core/ListItem")); var _AppBar = _interopRequireDefault(require("@material-ui/core/AppBar")); var _Toolbar = _interopRequireDefault(require("@material-ui/core/Toolbar")); var _Divider = _interopRequireDefault(require("@material-ui/core/Divider")); var _Button = _interopRequireDefault(require("@material-ui/core/Button")); var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton")); var _Menu = _interopRequireDefault(require("@material-ui/icons/Menu")); var _cookie = require("@core-sdk/services/cookie.service"); var _Snackbar = _interopRequireDefault(require("@material-ui/core/Snackbar")); var _HomeMenu = _interopRequireDefault(require("src/home/containers/HomeScreen/components/HomeMenu")); var _constants = _interopRequireDefault(require("src/common/constants")); var _withCommon = _interopRequireDefault(require("src/common/withCommon")); var _localStorage = require("@core-sdk/services/local-storage.service"); var _auth = require("@auth-sdk/clients/auth.client"); var _CheckCircle = _interopRequireDefault(require("@material-ui/icons/CheckCircle")); var _AccountCircle = _interopRequireDefault(require("@material-ui/icons/AccountCircle")); var _LocalOffer = _interopRequireDefault(require("@material-ui/icons/LocalOffer")); var _Typography = _interopRequireDefault(require("@material-ui/core/Typography")); var _capitalize = _interopRequireDefault(require("lodash/capitalize")); var _ListItemText = _interopRequireDefault(require("@material-ui/core/ListItemText")); var _TopAppBarWithDrawer = _interopRequireDefault(require("src/common/components/TopAppBarWithDrawer")); var _LeftDrawerMenu = _interopRequireDefault(require("src/common/components/LeftDrawerMenu")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /** * use rtl helper for switching custom css for rtl */ var styles = function styles(theme) { return { list: { width: 250 }, logo: { width: '100%', height: 60, borderRadius: 0 }, language: { background: theme.palette.common.porcelain }, languageBox: { paddingBottom: '7px', paddingTop: '7px', paddingLeft: '20px', paddingRight: '70px' }, languageText: { fontSize: theme.typography.fontSize18, fontWeight: '300', paddingLeft: '9px', color: theme.palette.common.black, textDecoration: 'none' }, languageTextBold: { fontSize: theme.typography.fontSize18, fontWeight: '600', paddingLeft: '9px', color: theme.palette.common.black, textDecoration: 'none' }, buttonBottom: { bottom: '0', margin: 'auto', width: '100%', textAlign: 'center', display: 'inline-block' }, button: { width: '192px', height: '40px', textTransform: 'capitalize', fontWeight: '300', fontSize: '17px', background: '#FFF', boxShadow: 'none', border: '1px solid', borderColor: theme.palette.common.azure, borderRadius: '0', color: theme.palette.common.azure }, checked: { color: theme.palette.common.azure, '& + $bar': { backgroundColor: theme.palette.common.azure } }, appBar: { boxShadow: 'none', position: 'fixed' }, bar: {}, langSwitch: { textAlign: 'center', margin: '0 auto', display: 'flex' }, successSnackBar: { '& > div': { textAlign: 'center', background: '#319e37', color: 'white' } }, successSnackBarMessage: { display: 'flex', alignItems: 'center', '& svg': { fontSize: theme.typography.fontSize18 } }, loginButton: { color: theme.palette.common.white, fontSize: theme.typography.fontSize16, fontWeight: theme.typography.fontWeightLight, textTransform: 'initial !important', lineHeight: "".concat(theme.spacing(3) * 1.5, "px"), width: '100%', display: 'block', '&, &:active, &:hover, &:visited': { backgroundColor: theme.productHome.secondaryCTA } }, avatarWrapper: { display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start' }, avatar: { fontSize: theme.spacing(3) * 2, margin: '0 -4px 10px', color: theme.palette.common.mineShaft }, loginWrapper: { display: 'block', padding: '16px 25px 0' }, userName: { fontSize: theme.typography.fontSize18, marginBottom: 0, whiteSpace: 'nowrap', textOverflow: 'ellipsis', overflow: 'hidden', color: theme.palette.common.mineShaft, fontWeight: theme.typography.fontWeightRegular }, userEmail: { fontSize: theme.typography.fontSize12, whiteSpace: 'nowrap', textOverflow: 'ellipsis', overflow: 'hidden', color: theme.palette.common.mineShaft }, logoutButton: { fontSize: theme.typography.fontSize18, color: theme.palette.common.cinnabar, textTransform: 'unset', padding: 0, minHeight: 0, maxHeight: 'none', minWidth: 0, marginTop: '4px' }, drawerDivider: { margin: '12px 0' }, listItemIcon: { color: theme.palette.common.grayChateau }, changeLanguageWrapper: { display: 'flex', justifyContent: 'space-between' }, mainContainer: { animation: 'topToBottom 2s', '-moz-animation': 'topToBottom 2s', '-webkit-animation': 'topToBottom 2s', '-o-animation': 'topToBottom 2s', '-webkit-transition': 'all 0.2s linear', '-moz-transition': 'all 0.2s linear', '-o-transition': 'all 0.2s linear', transition: 'all 0.2s linear' }, rootBottomList: { padding: 0, position: 'absolute', bottom: 16, width: '100%' }, bottomList: { padding: '0 8px' }, bottomListText: { width: '100%', paddingRight: 0, paddingLeft: 6, '& > span': { fontSize: theme.typography.fontSize12, color: theme.palette.common.grayChateau } }, kwiata: { width: 27, height: 27 } }; }; var HomeScreen = /*#__PURE__*/ function (_Component) { _inherits(HomeScreen, _Component); function HomeScreen() { var _getPrototypeOf2; var _this; _classCallCheck(this, HomeScreen); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(HomeScreen)).call.apply(_getPrototypeOf2, [this].concat(args))); _defineProperty(_assertThisInitialized(_this), "state", { left: false, languageSwitched: _this.props.helpers.getCurrentLanguage() === 'ar', successSnackBarMessage: '', showSuccessSnackBar: false, showLogoutSnackBar: false, showInvalidResetPasswordTokenSnackBar: false, user: {} }); _defineProperty(_assertThisInitialized(_this), "updateUser", function () { _auth.AuthClient.getUser().then(function (user) { _this.setState({ user: user }); }).catch(function () { _this.setState({ user: {} }); }); }); _defineProperty(_assertThisInitialized(_this), "handleSuccessSnackBarDisplay", function () { _this.setState(function () { var newState = { showSuccessSnackBar: _this.showSuccessSnackBar(), successSnackBarMessage: _this.getSuccessSnackBarMessage() }; _localStorage.$localStorage.remove(_constants.default.localStorageKeys.registrationSuccess); _localStorage.$localStorage.remove(_constants.default.localStorageKeys.loginSuccess); _localStorage.$localStorage.remove(_constants.default.localStorageKeys.resetPasswordSuccess); _localStorage.$localStorage.remove(_constants.default.localStorageKeys.startingLoginFlowFrom); return newState; }); }); _defineProperty(_assertThisInitialized(_this), "handleSuccessSnackBarClose", function () { _this.setState({ showSuccessSnackBar: false }); }); _defineProperty(_assertThisInitialized(_this), "toggleDrawer", function (openDrawer) { return function (event) { _this.setState({ left: openDrawer }); }; }); _defineProperty(_assertThisInitialized(_this), "handleChange", function (languageSwitched) { return function (event) { if (_this.props.helpers.getConnectionState() === 'offline') { _this.props.helpers.emit(_constants.default.APP_EVENTS.NO_CONNECTION, {}); return; } var lang = languageSwitched ? 'ar' : 'en'; console.log('languageSwitched'); _cookie.$cookie.set(_this.props.helpers.getLanguageCookieName(), lang); _this.props.helpers.emit(_constants.default.APP_EVENTS.CHANGE_LANGUAGE, { lang: lang }); _this.props.helpers.reloadCurrentView(); }; }); _defineProperty(_assertThisInitialized(_this), "handleLanguageClick", function (selectedLanguage) { return function (event) { if (_this.props.helpers.getCurrentLanguage() === selectedLanguage) { return; } if (_this.props.helpers.getConnectionState() === 'offline') { _this.props.helpers.emit(_constants.default.APP_EVENTS.NO_CONNECTION, {}); return; } _cookie.$cookie.set(_this.props.helpers.getLanguageCookieName(), selectedLanguage); _this.props.helpers.emit(_constants.default.APP_EVENTS.CHANGE_LANGUAGE, { lang: selectedLanguage }); _this.props.history.push({ search: "lang=".concat(selectedLanguage) }); _this.props.helpers.reloadCurrentView(); }; }); _defineProperty(_assertThisInitialized(_this), "handleDrawerItem", function (url) { if (url.includes('retrieve-booking')) { _this.props.history.push(_this.props.languageHelpers.langPrefix('flight/review/1/1'), { fromHomePage: true }); } else { _this.props.helpers.openLinkInNewWindow(url); } _this.props.helpers.emit(_constants.default.APP_EVENTS.PWA_HOME, { pwaEventCategory: 'pwa_home', pwaEventAction: 'navdrawer-open', pwaEventLabel: url, pwaEventInteraction: true }); }); _defineProperty(_assertThisInitialized(_this), "handleLogin", function () { _this.props.history.push(_this.props.languageHelpers.langPrefix('login')); _localStorage.$localStorage.set(_constants.default.localStorageKeys.startingLoginFlowFrom, 'homeScreen'); }); _defineProperty(_assertThisInitialized(_this), "handleLogout", function () { _auth.AuthClient.logout(); _this.toggleDrawer(false); _this.setState({ showLogoutSnackBar: true }); }); _defineProperty(_assertThisInitialized(_this), "handleLogoutSnackBarClose", function () { _this.setState({ showLogoutSnackBar: false }); }); _defineProperty(_assertThisInitialized(_this), "handleInvalidResetPasswordTokenSnackBarClose", function () { _this.setState({ showInvalidResetPasswordTokenSnackBar: false }); }); _defineProperty(_assertThisInitialized(_this), "getFullName", function (user) { return "".concat(user.FirstName, " ").concat(user.LastName).trim(); }); return _this; } _createClass(HomeScreen, [{ key: "componentDidMount", value: function componentDidMount() { //this.handleSuccessSnackBarDisplay(); //this.handleInvalidResetPasswordTokenSnackbarDisplay(); this.updateUser(); } /** * update user */ }, { key: "showSuccessSnackBar", /** * check success snackBar display * * @returns {Boolean} */ value: function showSuccessSnackBar() { var registrationSuccess = _localStorage.$localStorage.get(_constants.default.localStorageKeys.registrationSuccess); var loginSuccess = _localStorage.$localStorage.get(_constants.default.localStorageKeys.loginSuccess); var resetPasswordSuccess = _localStorage.$localStorage.get(_constants.default.localStorageKeys.resetPasswordSuccess); return registrationSuccess || loginSuccess || resetPasswordSuccess; } /** * handle success snackBar display */ }, { key: "handleInvalidResetPasswordTokenSnackbarDisplay", /** * handle invalid reset password token snackBar display * * @returns {Boolean} */ value: function handleInvalidResetPasswordTokenSnackbarDisplay() { this.setState(function () { var newState = { showInvalidResetPasswordTokenSnackBar: _localStorage.$localStorage.get(_constants.default.localStorageKeys.invalidResetPasswordToken) }; _localStorage.$localStorage.remove(_constants.default.localStorageKeys.invalidResetPasswordToken); return newState; }); } /** * handle success snackBar close */ }, { key: "getSuccessSnackBarMessage", /** * get success snackBar message * * @returns {String} message */ value: function getSuccessSnackBarMessage() { var translator = this.props.translator; var registrationSuccess = _localStorage.$localStorage.get(_constants.default.localStorageKeys.registrationSuccess); var loginSuccess = _localStorage.$localStorage.get(_constants.default.localStorageKeys.loginSuccess); var resetPasswordSuccess = _localStorage.$localStorage.get(_constants.default.localStorageKeys.resetPasswordSuccess); switch (true) { case registrationSuccess: return translator.gettext("Registration successful. Welcome to ".concat((0, _capitalize.default)(this.props.helpers.getDomainEnv()), "!")); case loginSuccess: return translator.gettext('Login successful. Welcome back!'); case resetPasswordSuccess: return translator.gettext('Password reset successful.'); default: return null; } } }, { key: "render", value: function render() { var _this2 = this; var _this$props = this.props, classes = _this$props.classes, translator = _this$props.translator; var state = this.state, props = this.props; var sideList = _react.default.createElement("div", { className: classes.list }, _react.default.createElement(_List.default, null, _auth.AuthClient.isLoggedIn() ? _react.default.createElement(_ListItem.default, { className: props.classes.loginWrapper }, _react.default.createElement("div", { className: props.classes.avatarWrapper }, _react.default.createElement(_AccountCircle.default, { className: props.classes.avatar }), _react.default.createElement(_Button.default, { className: props.classes.logoutButton, onClick: this.handleLogout }, props.translator.gettext('Logout'))), _react.default.createElement(_Typography.default, { className: props.classes.userName, variant: "body2", gutterBottom: true }, this.getFullName(state.user) !== '' ? this.getFullName(state.user) : state.user.email), this.getFullName(state.user) !== '' && _react.default.createElement(_Typography.default, { className: props.classes.userEmail, variant: "body1", gutterBottom: true }, state.user.email)) : _react.default.createElement(_ListItem.default, null, _react.default.createElement(_Button.default, { id: 'mobile-home-homeScreen-login-button', className: props.classes.loginButton, variant: "contained", onClick: this.handleLogin }, props.translator.gettext('Login / Register'))), _react.default.createElement(_Divider.default, { className: props.classes.drawerDivider }), _react.default.createElement(_ListItem.default, { button: true, onClick: function onClick(e) { return _this2.handleDrawerItem('offers'); }, id: 'mobile-home-homeScreen-offers' }, _react.default.createElement(_LocalOffer.default, { className: props.classes.listItemIcon }), _react.default.createElement("span", { className: classes.languageText }, translator.gettext('Offers'))), _react.default.createElement(_Divider.default, { className: props.classes.drawerDivider }), props.languageHelpers.isRtl() ? _react.default.createElement(_ListItem.default, { className: props.classes.changeLanguageWrapper, button: true, onClick: this.handleLanguageClick(_constants.default.language.english.code), id: 'mobile-home-homeScreen-changeLanguage-button' }, _react.default.createElement("span", { className: classes.languageText }, translator.gettext('Change language')), _react.default.createElement("span", { className: classes.languageText }, _constants.default.language.english.label)) : _react.default.createElement(_ListItem.default, { button: true, className: props.classes.changeLanguageWrapper, onClick: this.handleLanguageClick(_constants.default.language.arabic.code), id: 'mobile-home-homeScreen-changeLanguage-button' }, _react.default.createElement("span", { className: classes.languageText }, translator.gettext('Change language')), _react.default.createElement("span", { className: classes.languageText }, _constants.default.language.arabic.label)), _react.default.createElement(_ListItem.default, { button: true, onClick: function onClick(e) { return _this2.handleDrawerItem('faq'); }, id: 'mobile-home-homeScreen-faq' }, _react.default.createElement("span", { className: classes.languageText }, translator.gettext('FAQ'))), _react.default.createElement(_ListItem.default, { button: true, onClick: function onClick(e) { return _this2.handleDrawerItem('privacy-policy'); }, id: 'mobile-home-homeScreen-privacy-policy' }, _react.default.createElement("span", { className: classes.languageText }, translator.gettext('Privacy policy'))), _react.default.createElement(_ListItem.default, { button: true, onClick: function onClick(e) { return _this2.handleDrawerItem('terms-and-conditions'); }, id: 'mobile-home-homeScreen-terms-and-conditions' }, _react.default.createElement("span", { className: classes.languageText }, translator.gettext('Terms & Conditions'))), _react.default.createElement(_ListItem.default, { button: true, onClick: function onClick(e) { return _this2.handleDrawerItem('about-us'); }, id: 'mobile-home-homeScreen-about-us' }, _react.default.createElement("span", { className: classes.languageText }, translator.gettext('About Us')))), props.helpers.isKW() && props.helpers.isAlmosafer() && _react.default.createElement(_List.default, { className: props.classes.rootBottomList }, _react.default.createElement(_Divider.default, { className: props.classes.drawerDivider }), _react.default.createElement(_ListItem.default, { className: props.classes.bottomList }, _react.default.createElement("img", { alt: "icon_kwiata", src: "/mweb/assets/images/kw-iata.png", className: props.classes.kwiata }), _react.default.createElement(_ListItemText.default, { className: props.classes.bottomListText }, translator.gettext('IATA number: 42201121'), " ", _react.default.createElement("br", null), translator.gettext('Commercial License Number: 1996/528/م'))))); return _react.default.createElement("div", null, _react.default.createElement(_TopAppBarWithDrawer.default, { isRtl: props.languageHelpers.isRtl(), setDrawerMenu: this.toggleDrawer(true), showProfileIcon: true, position: "fixed" }), _react.default.createElement(_LeftDrawerMenu.default, { language: props.helpers.getCurrentLanguage(), isRtl: props.languageHelpers.isRtl(), isAlmosafer: props.helpers.isAlmosafer(), isKW: props.helpers.isKW(), drawerMenu: this.state.left, handleDrawerMenu: function handleDrawerMenu(status) { _this2.setState({ left: status }); } }), _react.default.createElement(_HomeMenu.default, null), _react.default.createElement(_Snackbar.default, { anchorOrigin: { vertical: 'bottom', horizontal: 'left' }, style: { zIndex: 9999, display: 'flex', padding: 0 }, className: props.classes.successSnackBar, autoHideDuration: 3000, open: state.showSuccessSnackBar, onClose: this.handleSuccessSnackBarClose, message: _react.default.createElement("div", { className: props.classes.successSnackBarMessage }, _react.default.createElement(_CheckCircle.default, { style: _defineProperty({}, "margin".concat(props.languageHelpers.isRtl() ? 'Left' : 'Right'), '10px') }), _react.default.createElement("span", null, state.successSnackBarMessage)) }), _react.default.createElement(_Snackbar.default, { anchorOrigin: { vertical: 'bottom', horizontal: 'left' }, style: { zIndex: 9999, display: 'flex', padding: 0 }, autoHideDuration: 2000, open: state.showLogoutSnackBar, onClose: this.handleLogoutSnackBarClose, message: props.translator.gettext('Logout successful') }), _react.default.createElement(_Snackbar.default, { anchorOrigin: { vertical: 'bottom', horizontal: 'left' }, style: { zIndex: 9999, display: 'flex', padding: 0 }, autoHideDuration: 2000, open: state.showInvalidResetPasswordTokenSnackBar, onClose: this.handleInvalidResetPasswordTokenSnackBarClose, message: props.translator.gettext('Link is not valid anymore.') })); } }]); return HomeScreen; }(_react.Component); HomeScreen.propTypes = { name: _propTypes.default.string, translator: _propTypes.default.object, helpers: _propTypes.default.object }; var composedHOC = (0, _recompose.compose)(_reactRouterDom.withRouter, (0, _styles.withStyles)(styles), _withCommon.default); var _default = composedHOC(HomeScreen); exports.default = _default;