UNPKG

@vega/review-tool

Version:
135 lines (104 loc) 4.35 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _CreateReviewProcess = require('./styles/CreateReviewProcess.css'); var _CreateReviewProcess2 = _interopRequireDefault(_CreateReviewProcess); var _reactPropsStream = require('react-props-stream'); var _uuid = require('@lyra/uuid'); var _uuid2 = _interopRequireDefault(_uuid); var _preview = require('part:@lyra/base/preview'); var _default = require('part:@lyra/components/buttons/default'); var _default2 = _interopRequireDefault(_default); var _client = require('part:@lyra/base/client'); var _client2 = _interopRequireDefault(_client); var _operators = require('rxjs/operators'); var _rxjs = require('rxjs'); var _withNavigateIntent = require('./withNavigateIntent'); var _withNavigateIntent2 = _interopRequireDefault(_withNavigateIntent); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function makeSnapshotOf(article) { return (0, _preview.observePaths)(article, ['title', 'mainImage', 'abstract', 'content']).pipe((0, _operators.take)(1), (0, _operators.map)(srcArticle => ({ _id: (0, _uuid2.default)(), _type: 'articleSnapshot', title: srcArticle.title, abstract: srcArticle.abstract, content: srcArticle.content }))); } function loadProps(props$) { const article$ = props$.pipe((0, _operators.map)(props => props.articleId), (0, _operators.distinctUntilChanged)(), (0, _operators.switchMap)(articleId => (0, _preview.observePaths)({ _id: articleId }, ['title']))); return (0, _rxjs.combineLatest)(props$, article$).pipe((0, _operators.map)(([props, article]) => _extends({}, props, { article }))); } class CreateReviewProcess extends _react2.default.Component /*:: <*, *>*/ { constructor(...args) { var _temp; return _temp = super(...args), this.state = { isCreating: false }, this.handleCreate = () => { var _props = this.props; const article = _props.article, navigateIntent = _props.navigateIntent; const reviewProcessId = (0, _uuid2.default)(); const snapshot$ = makeSnapshotOf(article).pipe((0, _operators.share)()); const reviewProcess$ = snapshot$.pipe((0, _operators.map)(snapshot => ({ _type: 'reviewProcess', _id: reviewProcessId, articleSnapshot: { _type: 'reference', _ref: snapshot._id }, article: { _type: 'reference', _ref: article._id } }))); this.setState({ isCreating: true }); (0, _rxjs.combineLatest)(snapshot$, reviewProcess$).pipe((0, _operators.mergeMap)(([snapshot, reviewProcess]) => _client2.default.observable.transaction().create(snapshot).create(reviewProcess).commit())).pipe((0, _operators.tap)(() => { navigateIntent('edit', { type: 'reviewProcess', id: reviewProcessId }); })).subscribe(); }, this.handleToggle = stateKey => { this.setState(prevState => ({ [stateKey]: !prevState[stateKey] })); }, _temp; } render() { const article = this.props.article; const isCreating = this.state.isCreating; return _react2.default.createElement( 'div', { className: _CreateReviewProcess2.default.root }, _react2.default.createElement( 'h2', null, 'Create new review for ', '"', _react2.default.createElement( 'span', { className: _CreateReviewProcess2.default.articleTitle }, article.title ), '"' ), _react2.default.createElement( _default2.default, { loading: isCreating, type: 'button', color: 'primary', onClick: this.handleCreate, disabled: isCreating }, isCreating ? 'Creating review…' : 'Create' ) ); } } exports.default = (0, _withNavigateIntent2.default)((0, _reactPropsStream.withPropsStream)(loadProps, CreateReviewProcess));