UNPKG

quesbook-component

Version:
160 lines (122 loc) 7.07 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _templateObject = _taggedTemplateLiteral(['\n query {\n currentUser: current_student {\n id\n name\n avatar\n email\n first_name\n last_name\n exam_type_names\n }\n }\n '], ['\n query {\n currentUser: current_student {\n id\n name\n avatar\n email\n first_name\n last_name\n exam_type_names\n }\n }\n ']); var _react = require('react'); var _react2 = _interopRequireDefault(_react); require('./QbLayout.scss'); var _QbHeader = require('../QbHeader'); var _QbHeader2 = _interopRequireDefault(_QbHeader); var _QbFooter = require('../QbFooter'); var _QbFooter2 = _interopRequireDefault(_QbFooter); var _graphqlTag = require('graphql-tag'); var _graphqlTag2 = _interopRequireDefault(_graphqlTag); var _apolloClient = require('apollo-client'); var _apolloClient2 = _interopRequireDefault(_apolloClient); var _const = require('../common/const'); var _jsCookie = require('js-cookie'); var _jsCookie2 = _interopRequireDefault(_jsCookie); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var networkInterface = (0, _apolloClient.createNetworkInterface)({ uri: _const.GQL_URL }); networkInterface.use([{ applyMiddleware: function applyMiddleware(req, next) { if (!req.options.headers) { req.options.headers = {}; // Create the header object if needed. } // get the authentication token from cookies if it exists, waiting for fix var token = _jsCookie2.default.get(_const.TOKEN_KEY); req.options.headers.authorization = token ? 'bearer ' + token : ''; next(); } }]); var client = new _apolloClient2.default({ networkInterface: networkInterface }); var QbLayout = function (_Component) { _inherits(QbLayout, _Component); function QbLayout() { _classCallCheck(this, QbLayout); var _this = _possibleConstructorReturn(this, (QbLayout.__proto__ || Object.getPrototypeOf(QbLayout)).call(this)); _this.state = { currentUser: null, navItemList: {} }; return _this; } _createClass(QbLayout, [{ key: 'componentWillMount', value: function componentWillMount() { var _this2 = this; client.query({ query: (0, _graphqlTag2.default)(_templateObject), fetchPolicy: 'network-only' }).then(function (res) { var navItemList = _this2.props.navItemList || _this2.props.route.navItemList; console.log('test', res.data.currentUser); _this2.setState({ currentUser: res.data.currentUser, navItemList: navItemList }); }).catch(function (e) { console.info(e); }); } }, { key: 'componentWillReceiveProps', value: function componentWillReceiveProps(newProps) { var navItemList = newProps.navItemList || newProps.route.navItemList; this.setState({ navItemList: navItemList }); } }, { key: 'onClick_SignOut', value: function onClick_SignOut() { var _this3 = this; var token = _jsCookie2.default.get(_const.TOKEN_KEY); function handleErrors(response) { if (!response.ok) { throw Error(response.statusText); } return response; } fetch(_const.API_URL + '/api/v1/user/sign_out', { method: 'POST', headers: { Accept: 'application/vnd.api+json', 'Content-Type': 'application/vnd.api+json', Authorization: 'bearer ' + token } }).then(handleErrors).then(function (res) { console.log('success'); _jsCookie2.default.remove(_const.TOKEN_KEY); _this3.setState({ currentUser: null }); window.location.href = '/'; return res.data; }).catch(function (error) { alert('sign out error!'); console.log(error); }); } }, { key: 'render', value: function render() { var messageId = this.props.messageId; var currentUser = this.state.currentUser; return _react2.default.createElement( 'div', { className: 'layout-ct' }, _react2.default.createElement(_QbHeader2.default, { messageId: messageId, client: client, currentUser: currentUser, navItemList: this.state.navItemList, onClick_SignOut: this.onClick_SignOut.bind(this) }), _react2.default.createElement( 'div', { className: 'body-content' }, this.props.children ), _react2.default.createElement(_QbFooter2.default, null) ); } }]); return QbLayout; }(_react.Component); exports.default = QbLayout; //# sourceMappingURL=QbLayout.js.map