quesbook-component
Version:
160 lines (122 loc) • 7.07 kB
JavaScript
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
;