mirror of
https://github.com/ascribe/onion.git
synced 2024-12-22 17:33:14 +01:00
fixed tests
refactored contractagreement actions
This commit is contained in:
parent
7fd5516b79
commit
0ce298879b
@ -36,18 +36,28 @@ class ContractAgreementListActions {
|
||||
}
|
||||
|
||||
fetchAvailableContractAgreementList(issuer){
|
||||
this.actions.fetchContractAgreementList(issuer, 'True', null)
|
||||
.then((contractAgreementListAccepted) => {
|
||||
if (!contractAgreementListAccepted) {
|
||||
// fetch pending agreements if no accepted ones
|
||||
return this.actions.fetchContractAgreementList(issuer, null, 'True');
|
||||
}
|
||||
}).then((contractAgreementListPending) => {
|
||||
// fetch public contract if no accepted nor pending agreements
|
||||
if (!contractAgreementListPending) {
|
||||
return ContractListActions.fetchContractList(null, null, issuer);
|
||||
}
|
||||
}).then((publicContract) => {
|
||||
return Q.Promise((resolve, reject) => {
|
||||
this.actions.fetchContractAgreementList(issuer, 'True', null)
|
||||
.then((contractAgreementListAccepted) => {
|
||||
if (!contractAgreementListAccepted) {
|
||||
// fetch pending agreements if no accepted ones
|
||||
return this.actions.fetchContractAgreementList(issuer, null, 'True');
|
||||
}
|
||||
else {
|
||||
resolve(contractAgreementListAccepted);
|
||||
}
|
||||
}).then((contractAgreementListPending) => {
|
||||
resolve(contractAgreementListPending);
|
||||
}).catch((err) => {
|
||||
console.logGlobal(err);
|
||||
reject(err);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
createContractAgreementFromPublicContract(issuer){
|
||||
ContractListActions.fetchContractList(null, null, issuer)
|
||||
.then((publicContract) => {
|
||||
// create an agreement with the public contract if there is one
|
||||
if (publicContract && publicContract.length > 0) {
|
||||
return this.actions.createContractAgreement(null, publicContract[0]);
|
||||
|
@ -54,9 +54,7 @@ let LoanForm = React.createClass({
|
||||
|
||||
componentDidMount() {
|
||||
ContractAgreementListStore.listen(this.onChange);
|
||||
if (this.props.email){
|
||||
ContractAgreementListActions.fetchAvailableContractAgreementList.defer(this.props.email);
|
||||
}
|
||||
this.getContractAgreementsOrCreatePublic(this.props.email);
|
||||
},
|
||||
|
||||
componentWillUnmount() {
|
||||
@ -67,6 +65,18 @@ let LoanForm = React.createClass({
|
||||
this.setState(state);
|
||||
},
|
||||
|
||||
getContractAgreementsOrCreatePublic(email){
|
||||
if (email) {
|
||||
ContractAgreementListActions.fetchAvailableContractAgreementList(email).then(
|
||||
(contractAgreementList) => {
|
||||
if (!contractAgreementList) {
|
||||
ContractAgreementListActions.createContractAgreementFromPublicContract.defer(email);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
getFormData(){
|
||||
return mergeOptions(
|
||||
this.props.id,
|
||||
@ -76,8 +86,8 @@ let LoanForm = React.createClass({
|
||||
|
||||
handleOnChange(event) {
|
||||
// event.target.value is the submitted email of the loanee
|
||||
if(event && event.target && event.target.value && event.target.value.match(/.*@.*/)) {
|
||||
ContractAgreementListActions.fetchContractAgreementList(event.target.value, 'True', null);
|
||||
if(event && event.target && event.target.value && event.target.value.match(/.*@.*\..*/)) {
|
||||
this.getContractAgreementsOrCreatePublic(event.target.value);
|
||||
} else {
|
||||
ContractAgreementListActions.flushContractAgreementList();
|
||||
}
|
||||
@ -172,8 +182,8 @@ let LoanForm = React.createClass({
|
||||
<Property
|
||||
name='loanee'
|
||||
label={getLangText('Loanee Email')}
|
||||
onChange={this.handleOnChange}
|
||||
editable={!this.props.email}
|
||||
onBlur={this.handleOnChange}
|
||||
overrideForm={!!this.props.email}>
|
||||
<input
|
||||
value={this.props.email}
|
||||
|
Loading…
Reference in New Issue
Block a user