import React, { Component } from 'react'; import { Button , Grid, Typography, TextField, Select, FormHelperText, MenuItem, FormControl, Radio, FormControlLabel, RadioGroup, Menu} from "@material-ui/core" import { Link } from 'react-router-dom' function getCookie(name) { let cookieValue = null; if (document.cookie && document.cookie !== '') { const cookies = document.cookie.split(';'); for (let i = 0; i < cookies.length; i++) { const cookie = cookies[i].trim(); // Does this cookie string begin with the name we want? if (cookie.substring(0, name.length + 1) === (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } const csrftoken = getCookie('csrftoken'); export default class MakerPage extends Component { defaultCurrency = 1; defaultCurrencyCode = 'USD'; defaultAmount = 0 ; defaultPaymentMethod = "Not specified"; defaultPremium = 0; constructor(props) { super(props); this.state={ isExplicit: false, type: 0, currency: this.defaultCurrency, currencyCode: this.defaultCurrencyCode, amount: this.defaultAmount, payment_method: this.defaultPaymentMethod, premium: 0, satoshis: null, } } handleTypeChange=(e)=>{ this.setState({ type: e.target.value, }); } handleCurrencyChange=(e)=>{ var code = (e.target.value == 1 ) ? "USD": ((e.target.value == 2 ) ? "EUR":"ETH") this.setState({ currency: e.target.value, currencyCode: code, }); } handleAmountChange=(e)=>{ this.setState({ amount: e.target.value, }); } handlePaymentMethodChange=(e)=>{ this.setState({ payment_method: e.target.value, }); } handlePremiumChange=(e)=>{ this.setState({ premium: e.target.value, }); } handleSatoshisChange=(e)=>{ this.setState({ satoshis: e.target.value, }); } handleClickRelative=(e)=>{ this.setState({ isExplicit: false, satoshis: null, premium: 0, }); } handleClickisExplicit=(e)=>{ this.setState({ isExplicit: true, satoshis: 10000, premium: null, }); } handleCreateOfferButtonPressed=()=>{ console.log(this.state) const requestOptions = { method: 'POST', headers: {'Content-Type':'application/json', 'X-CSRFToken': csrftoken}, body: JSON.stringify({ type: this.state.type, currency: this.state.currency, amount: this.state.amount, payment_method: this.state.payment_method, is_explicit: this.state.isExplicit, premium: this.state.premium, satoshis: this.state.satoshis, }), }; fetch("/api/make/",requestOptions) .then((response) => response.json()) .then((data) => this.props.history.push('/order/' + data.id)); } render() { return ( Make an Order } label="Buy" labelPlacement="Top" /> } label="Sell" labelPlacement="Top" />
Choose Buy or Sell Bitcoin
Select Payment Currency
Amount of Fiat to Trade
Enter the Payment Method(s)
} label="Relative" labelPlacement="Top" onClick={this.handleClickRelative} /> } label="Explicit" labelPlacement="Top" onClick={this.handleClickisExplicit} onShow="false" />
Choose a Pricing Method
{/* conditional shows either Premium % field or Satoshis field based on pricing method */} { this.state.isExplicit ?
Explicit Amount in Satoshis
:
Premium Relative to Market Price (%)
}
Create a BTC {this.state.type==0 ? "buy":"sell"} order for {this.state.amount} {this.state.currencyCode} {this.state.isExplicit ? " of " + this.state.satoshis + " Satoshis" : (this.state.premium == 0 ? " at market price" : (this.state.premium > 0 ? " at a " + this.state.premium + "% premium":" at a " + -this.state.premium + "% discount") ) }
); } }