diff --git a/js/components/whitelabel/wallet/components/lumenus/lumenus_buttons/lumenus_submit_button.js b/js/components/whitelabel/wallet/components/lumenus/lumenus_buttons/lumenus_submit_button.js index 941b3ec0..6722beb7 100644 --- a/js/components/whitelabel/wallet/components/lumenus/lumenus_buttons/lumenus_submit_button.js +++ b/js/components/whitelabel/wallet/components/lumenus/lumenus_buttons/lumenus_submit_button.js @@ -3,19 +3,30 @@ import React from 'react'; import classNames from 'classnames'; +import LumenusAdditionalDataForm from '../lumenus_forms/lumenus_additional_data_form'; + import ConsignButton from '../../../../../ascribe_buttons/acls/consign_button'; +import AclFormFactory from '../../../../../ascribe_forms/acl_form_factory'; +import ConsignForm from '../../../../../ascribe_forms/form_consign'; + +import ModalWrapper from '../../../../../ascribe_modal/modal_wrapper'; + +import PieceActions from '../../../../../../actions/piece_actions'; import WhitelabelActions from '../../../../../../actions/whitelabel_actions'; import WhitelabelStore from '../../../../../../stores/whitelabel_store'; +import ApiUrls from '../../../../../../constants/api_urls'; + +import { getAclFormDataId } from '../../../../../../utils/form_utils'; import { getLangText } from '../../../../../../utils/lang_utils'; let LumenusSubmitButton = React.createClass({ propTypes: { availableAcls: React.PropTypes.object.isRequired, - currentUser: React.PropTypes.object, - pieceOrEditions: React.PropTypes.array, - handleSuccess: React.PropTypes.func, + currentUser: React.PropTypes.object.isRequired, + editions: React.PropTypes.array.isRequired, + handleSuccess: React.PropTypes.func.isRequired, className: React.PropTypes.string, }, @@ -25,6 +36,7 @@ let LumenusSubmitButton = React.createClass({ componentDidMount() { WhitelabelStore.listen(this.onChange); + WhitelabelActions.fetchWhitelabel(); }, @@ -36,19 +48,79 @@ let LumenusSubmitButton = React.createClass({ this.setState(state); }, - render() { - const { availableAcls, currentUser, className, pieceOrEditions, handleSuccess } = this.props; + getFormDataId() { + return getAclFormDataId(false, this.props.editions); + }, - return ( - - ); + getAggregateEditionDetails() { + const { editions } = this.props; + + // Currently, we only care if all the given editions are from the same parent piece + // and if they can be submitted + return editions.reduce((details, curEdition) => { + return { + solePieceId: details.solePieceId === curEdition.parent ? details.solePieceId : null, + canSubmit: details.canSubmit && curEdition.acl.acl_wallet_submit + }; + }, { + solePieceId: editions.length > 0 ? editions[0].parent : null, + canSubmit: editions.length > 0 ? editions[0].acl.acl_wallet_submit : false + }); + }, + + handleAdditionalDataSuccess(pieceId) { + // Fetch newly updated piece to update the views + PieceActions.fetchOne(pieceId); + + this.refs.consignModal.show(); + }, + + render() { + const { availableAcls, currentUser, className, editions, handleSuccess } = this.props; + const buttonTitle = getLangText('CONSIGN TO LUMENUS'); + + const { solePieceId, canSubmit } = this.getAggregateEditionDetails(); + + if (solePieceId && !canSubmit) { + return ( + + + {buttonTitle} + + } + handleSuccess={this.handleAdditionalDataSuccess.bind(this, solePieceId)} + title={getLangText('Add additional information')}> + + + + + + + + ); + } else { + return ( + + ); + } } });