mirror of
https://github.com/ascribe/onion.git
synced 2025-01-03 18:35:09 +01:00
Merge branch 'AD-419-decouple-piece-registration-from-'
This commit is contained in:
commit
a0e6e0c5a4
@ -5,7 +5,7 @@ import React from 'react';
|
|||||||
import ConsignForm from '../ascribe_forms/form_consign';
|
import ConsignForm from '../ascribe_forms/form_consign';
|
||||||
import UnConsignForm from '../ascribe_forms/form_unconsign';
|
import UnConsignForm from '../ascribe_forms/form_unconsign';
|
||||||
import TransferForm from '../ascribe_forms/form_transfer';
|
import TransferForm from '../ascribe_forms/form_transfer';
|
||||||
import LoanForm from '../ascribe_forms/form_loan_new';
|
import LoanForm from '../ascribe_forms/form_loan';
|
||||||
import ShareForm from '../ascribe_forms/form_share_email';
|
import ShareForm from '../ascribe_forms/form_share_email';
|
||||||
import ModalWrapper from '../ascribe_modal/modal_wrapper';
|
import ModalWrapper from '../ascribe_modal/modal_wrapper';
|
||||||
import AppConstants from '../../constants/application_constants';
|
import AppConstants from '../../constants/application_constants';
|
||||||
|
@ -52,10 +52,10 @@ let DeleteButton = React.createClass({
|
|||||||
|
|
||||||
} else if(availableAcls.acl_unshare){
|
} else if(availableAcls.acl_unshare){
|
||||||
|
|
||||||
if(this.props.editions && this.props.editions.constructor !== Array && this.props.editions.acl.acl_unshare) {
|
if(this.props.editions) {
|
||||||
content = <EditionRemoveFromCollectionForm editions={this.props.editions}/>;
|
content = <EditionRemoveFromCollectionForm editions={this.props.editions}/>;
|
||||||
title = getLangText('Remove Edition from Collection');
|
title = getLangText('Remove Edition from Collection');
|
||||||
} else if(this.props.piece && this.props.piece.acl.acl_unshare) {
|
} else if(this.props.piece) {
|
||||||
content = <PieceRemoveFromCollectionForm pieceId={this.props.piece.id}/>;
|
content = <PieceRemoveFromCollectionForm pieceId={this.props.piece.id}/>;
|
||||||
title = getLangText('Remove Piece from Collection');
|
title = getLangText('Remove Piece from Collection');
|
||||||
}
|
}
|
||||||
|
@ -62,6 +62,7 @@ let Form = React.createClass({
|
|||||||
if ('getFormData' in this.props){
|
if ('getFormData' in this.props){
|
||||||
data = mergeOptionsWithDuplicates(data, this.props.getFormData());
|
data = mergeOptionsWithDuplicates(data, this.props.getFormData());
|
||||||
}
|
}
|
||||||
|
console.log(data);
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -2,149 +2,178 @@
|
|||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import ApiUrls from '../../constants/api_urls';
|
import Button from 'react-bootstrap/lib/Button';
|
||||||
import FormMixin from '../../mixins/form_mixin';
|
|
||||||
import InputText from './input_text';
|
import Form from './form';
|
||||||
import InputHidden from './input_hidden';
|
import Property from './property';
|
||||||
import InputCheckbox from './input_checkbox';
|
import InputTextAreaToggable from './input_textarea_toggable';
|
||||||
import InputDate from './input_date';
|
import InputDate from './input_date';
|
||||||
import InputTextArea from './input_textarea';
|
import InputCheckbox from './input_checkbox';
|
||||||
|
|
||||||
import OwnershipFetcher from '../../fetchers/ownership_fetcher';
|
import LoanContractStore from '../../stores/loan_contract_store';
|
||||||
import ButtonSubmitOrClose from '../ascribe_buttons/button_submit_close';
|
import LoanContractActions from '../../actions/loan_contract_actions';
|
||||||
|
|
||||||
|
import AppConstants from '../../constants/application_constants';
|
||||||
|
|
||||||
|
import { mergeOptions } from '../../utils/general_utils';
|
||||||
|
import { getLangText } from '../../utils/lang_utils';
|
||||||
|
|
||||||
import { getLangText } from '../../utils/lang_utils.js';
|
|
||||||
|
|
||||||
let LoanForm = React.createClass({
|
let LoanForm = React.createClass({
|
||||||
|
propTypes: {
|
||||||
getInitialState() {
|
url: React.PropTypes.string,
|
||||||
this.setState({
|
id: React.PropTypes.object,
|
||||||
contract_key: null,
|
message: React.PropTypes.string,
|
||||||
contract_url: null,
|
onRequestHide: React.PropTypes.func,
|
||||||
loaneeHasContract: false
|
handleSuccess: React.PropTypes.func
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
mixins: [FormMixin],
|
getInitialState() {
|
||||||
|
return LoanContractStore.getState();
|
||||||
|
},
|
||||||
|
|
||||||
url() {
|
componentDidMount() {
|
||||||
return ApiUrls.ownership_loans;
|
LoanContractStore.listen(this.onChange);
|
||||||
|
},
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
LoanContractStore.unlisten(this.onChange);
|
||||||
|
},
|
||||||
|
|
||||||
|
onChange(state) {
|
||||||
|
this.setState(state);
|
||||||
},
|
},
|
||||||
|
|
||||||
getFormData(){
|
getFormData(){
|
||||||
return {
|
return this.props.id;
|
||||||
bitcoin_id: this.getBitcoinIds().join(),
|
|
||||||
loanee: this.refs.loanee.state.value,
|
|
||||||
gallery_name: this.refs.gallery_name.state.value,
|
|
||||||
startdate: this.refs.startdate.state.value_formatted,
|
|
||||||
enddate: this.refs.enddate.state.value_formatted,
|
|
||||||
loan_message: this.refs.loan_message.state.value,
|
|
||||||
password: this.refs.password.state.value,
|
|
||||||
terms: this.refs.terms.state.value
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
|
|
||||||
handleLoanEmailBlur(){
|
handleOnBlur(event) {
|
||||||
OwnershipFetcher.fetchLoanContract(this.refs.loanee.state.value)
|
LoanContractActions.fetchLoanContract(event.target.value);
|
||||||
.then((res) => {
|
|
||||||
if (res && res.length > 0) {
|
|
||||||
this.setState({
|
|
||||||
contract_key: res[0].s3Key,
|
|
||||||
contract_url: res[0].s3Url,
|
|
||||||
loaneeHasContract: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.resetLoanContract();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.log(err);
|
|
||||||
this.resetLoanContract();
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
resetLoanContract(){
|
getContractCheckbox() {
|
||||||
this.setState({
|
if(this.state.contractKey && this.state.contractUrl) {
|
||||||
contract_key: null,
|
return (
|
||||||
contract_url: null,
|
<Property
|
||||||
loaneeHasContract: false
|
name="terms"
|
||||||
});
|
className="ascribe-settings-property-collapsible-toggle"
|
||||||
},
|
style={{paddingBottom: 0}}>
|
||||||
|
<InputCheckbox>
|
||||||
renderForm() {
|
<span>
|
||||||
let title = this.getTitlesString().join('');
|
|
||||||
let username = this.props.currentUser.username;
|
|
||||||
let message =
|
|
||||||
`${getLangText('Hi')},
|
|
||||||
|
|
||||||
${getLangText('I loan')} :
|
|
||||||
${title}${getLangText('to you')}.
|
|
||||||
|
|
||||||
${getLangText('Truly yours')},
|
|
||||||
${username}`;
|
|
||||||
|
|
||||||
let contract = <InputHidden ref="terms" value="True"/>;
|
|
||||||
if (this.state.loaneeHasContract){
|
|
||||||
let label = (<div>
|
|
||||||
{getLangText('I agree to the')}
|
{getLangText('I agree to the')}
|
||||||
<a href={this.state.contract_url} target="_blank">
|
<a href={this.state.contractUrl} target="_blank">
|
||||||
{getLangText('terms of')} {this.refs.loanee.state.value}
|
{getLangText('terms of')} {this.state.contractEmail}
|
||||||
</a>
|
</a>
|
||||||
</div>);
|
</span>
|
||||||
contract = (<InputCheckbox
|
</InputCheckbox>
|
||||||
ref="terms"
|
</Property>
|
||||||
required="required"
|
);
|
||||||
label={label}
|
} else {
|
||||||
/>);
|
return (
|
||||||
|
<Property
|
||||||
|
hidden={true}
|
||||||
|
name="terms"
|
||||||
|
className="ascribe-settings-property-collapsible-toggle"
|
||||||
|
style={{paddingBottom: 0}}>
|
||||||
|
<input
|
||||||
|
ref="input"
|
||||||
|
type="checkbox"
|
||||||
|
defaultValue={true} />
|
||||||
|
</Property>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
onRequestHide() {
|
||||||
|
// Since the modal can be opened without sending it to the server
|
||||||
|
// and therefore clearing the store,
|
||||||
|
// we'll need to make sure to flush the store once the
|
||||||
|
// modal unmounts
|
||||||
|
LoanContractActions.updateLoanContract({
|
||||||
|
contractUrl: null,
|
||||||
|
contractEmail: null,
|
||||||
|
contractKey: null
|
||||||
|
});
|
||||||
|
|
||||||
|
this.props.onRequestHide();
|
||||||
|
},
|
||||||
|
|
||||||
|
render() {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<form id="loan_modal_content" role="form" onSubmit={this.submit}>
|
<Form
|
||||||
<input className="invisible" type="email" name="fake_loanee"/>
|
ref='form'
|
||||||
<input className="invisible" type="password" name="fake_password"/>
|
url={this.props.url}
|
||||||
<InputText
|
getFormData={this.getFormData}
|
||||||
ref="loanee"
|
handleSuccess={this.props.handleSuccess}
|
||||||
placeHolder={getLangText('Loanee email')}
|
buttons={
|
||||||
required="required"
|
<div className="modal-footer">
|
||||||
|
<p className="pull-right">
|
||||||
|
<Button
|
||||||
|
className="btn btn-default btn-sm ascribe-margin-1px"
|
||||||
|
type="submit">{getLangText('LOAN')}</Button>
|
||||||
|
<Button
|
||||||
|
className="btn btn-danger btn-delete btn-sm ascribe-margin-1px"
|
||||||
|
style={{marginLeft: '0'}}
|
||||||
|
onClick={this.onRequestHide}>{getLangText('CLOSE')}</Button>
|
||||||
|
</p>
|
||||||
|
</div>}
|
||||||
|
spinner={
|
||||||
|
<div className="modal-footer">
|
||||||
|
<img src={AppConstants.baseUrl + 'static/img/ascribe_animated_small.gif'} />
|
||||||
|
</div>}>
|
||||||
|
<Property
|
||||||
|
name='loanee'
|
||||||
|
label={getLangText('Loanee Email')}
|
||||||
|
onBlur={this.handleOnBlur}>
|
||||||
|
<input
|
||||||
type="email"
|
type="email"
|
||||||
submitted={this.state.submitted}
|
placeholder={getLangText('Email of the loanee')}
|
||||||
onBlur={this.handleLoanEmailBlur}/>
|
required/>
|
||||||
<InputText
|
</Property>
|
||||||
ref="gallery_name"
|
<Property
|
||||||
placeHolder={getLangText('Gallery/exhibition (optional)')}
|
name='gallery_name'
|
||||||
required=""
|
label={getLangText('Gallery/exhibition (optional)')}
|
||||||
|
onBlur={this.handleOnBlur}>
|
||||||
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
submitted={this.state.submitted}/>
|
placeholder={getLangText('Gallery/exhibition (optional)')}/>
|
||||||
<div className="row">
|
</Property>
|
||||||
<div className="col-xs-6">
|
<Property
|
||||||
|
name='startdate'
|
||||||
|
label={getLangText('Start date')}>
|
||||||
<InputDate
|
<InputDate
|
||||||
ref="startdate"
|
|
||||||
placeholderText={getLangText('Loan start date')} />
|
placeholderText={getLangText('Loan start date')} />
|
||||||
</div>
|
</Property>
|
||||||
<div className="col-xs-6 form-group">
|
<Property
|
||||||
|
name='enddate'
|
||||||
|
label={getLangText('End date')}>
|
||||||
<InputDate
|
<InputDate
|
||||||
ref="enddate"
|
|
||||||
placeholderText={getLangText('Loan end date')} />
|
placeholderText={getLangText('Loan end date')} />
|
||||||
</div>
|
</Property>
|
||||||
</div>
|
<Property
|
||||||
<InputTextArea
|
name='loan_message'
|
||||||
ref="loan_message"
|
label={getLangText('Personal Message')}
|
||||||
defaultValue={message}
|
editable={true}>
|
||||||
required=""
|
<InputTextAreaToggable
|
||||||
/>
|
rows={1}
|
||||||
<InputText
|
editable={true}
|
||||||
ref="password"
|
defaultValue={this.props.message}
|
||||||
placeHolder={getLangText('Password')}
|
placeholder={getLangText('Enter a message...')}
|
||||||
required="required"
|
required="required"/>
|
||||||
|
</Property>
|
||||||
|
|
||||||
|
<Property
|
||||||
|
name='password'
|
||||||
|
label={getLangText('Password')}>
|
||||||
|
<input
|
||||||
type="password"
|
type="password"
|
||||||
submitted={this.state.submitted}/>
|
placeholder={getLangText('Enter your password')}
|
||||||
{contract}
|
required/>
|
||||||
<ButtonSubmitOrClose
|
</Property>
|
||||||
text={getLangText('LOAN')}
|
{this.getContractCheckbox()}
|
||||||
onClose={this.props.onRequestHide}
|
</Form>
|
||||||
submitted={this.state.submitted} />
|
|
||||||
</form>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,168 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
import React from 'react';
|
|
||||||
|
|
||||||
import Button from 'react-bootstrap/lib/Button';
|
|
||||||
|
|
||||||
import Form from './form';
|
|
||||||
import Property from './property';
|
|
||||||
import InputTextAreaToggable from './input_textarea_toggable';
|
|
||||||
import InputDate from './input_date';
|
|
||||||
import InputCheckbox from './input_checkbox';
|
|
||||||
|
|
||||||
import LoanContractStore from '../../stores/loan_contract_store';
|
|
||||||
import LoanContractActions from '../../actions/loan_contract_actions';
|
|
||||||
|
|
||||||
import AppConstants from '../../constants/application_constants';
|
|
||||||
|
|
||||||
import { mergeOptions } from '../../utils/general_utils';
|
|
||||||
import { getLangText } from '../../utils/lang_utils';
|
|
||||||
|
|
||||||
|
|
||||||
let LoanForm = React.createClass({
|
|
||||||
propTypes: {
|
|
||||||
url: React.PropTypes.string,
|
|
||||||
id: React.PropTypes.object,
|
|
||||||
message: React.PropTypes.string,
|
|
||||||
onRequestHide: React.PropTypes.func,
|
|
||||||
handleSuccess: React.PropTypes.func
|
|
||||||
},
|
|
||||||
|
|
||||||
getInitialState() {
|
|
||||||
return LoanContractStore.getState();
|
|
||||||
},
|
|
||||||
|
|
||||||
componentDidMount() {
|
|
||||||
LoanContractStore.listen(this.onChange);
|
|
||||||
},
|
|
||||||
|
|
||||||
componentWillUnmount() {
|
|
||||||
LoanContractStore.unlisten(this.onChange);
|
|
||||||
},
|
|
||||||
|
|
||||||
onChange(state) {
|
|
||||||
this.setState(state);
|
|
||||||
},
|
|
||||||
|
|
||||||
getFormData(){
|
|
||||||
return this.props.id;
|
|
||||||
},
|
|
||||||
|
|
||||||
handleOnBlur(event) {
|
|
||||||
LoanContractActions.fetchLoanContract(event.target.value);
|
|
||||||
},
|
|
||||||
|
|
||||||
getContractCheckbox() {
|
|
||||||
if(this.state.contractKey && this.state.contractUrl) {
|
|
||||||
return (
|
|
||||||
<Property
|
|
||||||
name="terms"
|
|
||||||
className="ascribe-settings-property-collapsible-toggle"
|
|
||||||
style={{paddingBottom: 0}}>
|
|
||||||
<InputCheckbox>
|
|
||||||
<span>
|
|
||||||
{getLangText('I agree to the')}
|
|
||||||
<a href={this.state.contractUrl} target="_blank">
|
|
||||||
{getLangText('terms of')} {this.state.contractEmail}
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
</InputCheckbox>
|
|
||||||
</Property>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
onRequestHide() {
|
|
||||||
// Since the modal can be opened without sending it to the server
|
|
||||||
// and therefore clearing the store,
|
|
||||||
// we'll need to make sure to flush the store once the
|
|
||||||
// modal unmounts
|
|
||||||
LoanContractActions.updateLoanContract({
|
|
||||||
contractUrl: null,
|
|
||||||
contractEmail: null,
|
|
||||||
contractKey: null
|
|
||||||
});
|
|
||||||
|
|
||||||
this.props.onRequestHide();
|
|
||||||
},
|
|
||||||
|
|
||||||
render() {
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Form
|
|
||||||
ref='form'
|
|
||||||
url={this.props.url}
|
|
||||||
getFormData={this.getFormData}
|
|
||||||
handleSuccess={this.props.handleSuccess}
|
|
||||||
buttons={
|
|
||||||
<div className="modal-footer">
|
|
||||||
<p className="pull-right">
|
|
||||||
<Button
|
|
||||||
className="btn btn-default btn-sm ascribe-margin-1px"
|
|
||||||
type="submit">{getLangText('LOAN')}</Button>
|
|
||||||
<Button
|
|
||||||
className="btn btn-danger btn-delete btn-sm ascribe-margin-1px"
|
|
||||||
style={{marginLeft: '0'}}
|
|
||||||
onClick={this.onRequestHide}>{getLangText('CLOSE')}</Button>
|
|
||||||
</p>
|
|
||||||
</div>}
|
|
||||||
spinner={
|
|
||||||
<div className="modal-footer">
|
|
||||||
<img src={AppConstants.baseUrl + 'static/img/ascribe_animated_small.gif'} />
|
|
||||||
</div>}>
|
|
||||||
<Property
|
|
||||||
name='loanee'
|
|
||||||
label={getLangText('Loanee Email')}
|
|
||||||
onBlur={this.handleOnBlur}>
|
|
||||||
<input
|
|
||||||
type="email"
|
|
||||||
placeholder={getLangText('Email of the loanee')}
|
|
||||||
required/>
|
|
||||||
</Property>
|
|
||||||
<Property
|
|
||||||
name='gallery_name'
|
|
||||||
label={getLangText('Gallery/exhibition (optional)')}
|
|
||||||
onBlur={this.handleOnBlur}>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
placeholder={getLangText('Gallery/exhibition (optional)')}/>
|
|
||||||
</Property>
|
|
||||||
<Property
|
|
||||||
name='startdate'
|
|
||||||
label={getLangText('Start date')}>
|
|
||||||
<InputDate
|
|
||||||
placeholderText={getLangText('Loan start date')} />
|
|
||||||
</Property>
|
|
||||||
<Property
|
|
||||||
name='enddate'
|
|
||||||
label={getLangText('End date')}>
|
|
||||||
<InputDate
|
|
||||||
placeholderText={getLangText('Loan end date')} />
|
|
||||||
</Property>
|
|
||||||
<Property
|
|
||||||
name='loan_message'
|
|
||||||
label={getLangText('Personal Message')}
|
|
||||||
editable={true}>
|
|
||||||
<InputTextAreaToggable
|
|
||||||
rows={1}
|
|
||||||
editable={true}
|
|
||||||
defaultValue={this.props.message}
|
|
||||||
placeholder={getLangText('Enter a message...')}
|
|
||||||
required="required"/>
|
|
||||||
</Property>
|
|
||||||
|
|
||||||
<Property
|
|
||||||
name='password'
|
|
||||||
label={getLangText('Password')}>
|
|
||||||
<input
|
|
||||||
type="password"
|
|
||||||
placeholder={getLangText('Enter your password')}
|
|
||||||
required/>
|
|
||||||
</Property>
|
|
||||||
{this.getContractCheckbox()}
|
|
||||||
</Form>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
export default LoanForm;
|
|
@ -40,7 +40,7 @@ let InputCheckbox = React.createClass({
|
|||||||
<span
|
<span
|
||||||
onClick={this.handleFocus}
|
onClick={this.handleFocus}
|
||||||
onFocus={this.handleFocus}>
|
onFocus={this.handleFocus}>
|
||||||
<input type="checkbox" ref="checkbox"/>
|
<input type="checkbox" ref="checkbox" required="required"/>
|
||||||
<span className="checkbox">
|
<span className="checkbox">
|
||||||
{this.props.children}
|
{this.props.children}
|
||||||
</span>
|
</span>
|
||||||
|
@ -31,7 +31,6 @@ let InputDate = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
render: function () {
|
render: function () {
|
||||||
console.log(this.state.value);
|
|
||||||
return (
|
return (
|
||||||
<div className="form-group">
|
<div className="form-group">
|
||||||
<DatePicker
|
<DatePicker
|
||||||
|
@ -177,9 +177,9 @@ let RegisterPiece = React.createClass( {
|
|||||||
{...this.props}
|
{...this.props}
|
||||||
isFineUploaderEditable={this.state.isFineUploaderEditable}
|
isFineUploaderEditable={this.state.isFineUploaderEditable}
|
||||||
handleSuccess={this.handleSuccess}>
|
handleSuccess={this.handleSuccess}>
|
||||||
{this.getSpecifyEditions()}
|
|
||||||
{this.props.children}
|
{this.props.children}
|
||||||
{this.getLicenses()}
|
{this.getLicenses()}
|
||||||
|
{this.getSpecifyEditions()}
|
||||||
</RegisterPieceForm>
|
</RegisterPieceForm>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
|
@ -26,8 +26,8 @@ let apiUrls = {
|
|||||||
'ownership_consigns_deny': AppConstants.apiEndpoint + 'ownership/consigns/deny/',
|
'ownership_consigns_deny': AppConstants.apiEndpoint + 'ownership/consigns/deny/',
|
||||||
'ownership_loans_pieces': AppConstants.apiEndpoint + 'ownership/loans/pieces/',
|
'ownership_loans_pieces': AppConstants.apiEndpoint + 'ownership/loans/pieces/',
|
||||||
'ownership_loans_editions': AppConstants.apiEndpoint + 'ownership/loans/editions/',
|
'ownership_loans_editions': AppConstants.apiEndpoint + 'ownership/loans/editions/',
|
||||||
'ownership_loans_confirm': AppConstants.apiEndpoint + 'ownership/loans/confirm/',
|
'ownership_loans_confirm': AppConstants.apiEndpoint + 'ownership/loans/editions/confirm/',
|
||||||
'ownership_loans_deny': AppConstants.apiEndpoint + 'ownership/loans/deny/',
|
'ownership_loans_deny': AppConstants.apiEndpoint + 'ownership/loans/editions/deny/',
|
||||||
'ownership_loans_contract': AppConstants.apiEndpoint + 'ownership/loans/editions/contract/',
|
'ownership_loans_contract': AppConstants.apiEndpoint + 'ownership/loans/editions/contract/',
|
||||||
'ownership_shares_editions': AppConstants.apiEndpoint + 'ownership/shares/editions/',
|
'ownership_shares_editions': AppConstants.apiEndpoint + 'ownership/shares/editions/',
|
||||||
'ownership_shares_pieces': AppConstants.apiEndpoint + 'ownership/shares/pieces/',
|
'ownership_shares_pieces': AppConstants.apiEndpoint + 'ownership/shares/pieces/',
|
||||||
|
Loading…
Reference in New Issue
Block a user