diff --git a/basicswap/http_server.py b/basicswap/http_server.py index 56aaa83..82a1f71 100644 --- a/basicswap/http_server.py +++ b/basicswap/http_server.py @@ -299,11 +299,10 @@ class HttpHandler(BaseHTTPRequestHandler): form_id=os.urandom(8).hex(), ), 'UTF-8') - def parseOfferFormData(self, form_data): + def parseOfferFormData(self, form_data, page_data): swap_client = self.server.swap_client errors = [] - page_data = {} parsed_data = {} if b'addr_from' in form_data: @@ -325,26 +324,11 @@ class HttpHandler(BaseHTTPRequestHandler): parsed_data['coin_to'] = coin_to if coin_to == Coins.XMR: page_data['swap_style'] = 'xmr' + else: + page_data['swap_style'] = 'atomic' except Exception: errors.append('Unknown Coin To') - page_data['fee_from_conf'] = int(form_data[b'fee_from_conf'][0]) - page_data['fee_from_extra'] = int(form_data[b'fee_from_extra'][0]) - - parsed_data['fee_from_conf'] = page_data['fee_from_conf'] - parsed_data['fee_from_extra'] = page_data['fee_from_extra'] - - page_data['fee_to_conf'] = int(form_data[b'fee_to_conf'][0]) - page_data['fee_to_extra'] = int(form_data[b'fee_to_extra'][0]) - - parsed_data['fee_to_conf'] = page_data['fee_to_conf'] - parsed_data['fee_to_extra'] = page_data['fee_to_extra'] - - if b'check_offer' in form_data: - page_data['check_offer'] = True - if b'submit_offer' in form_data: - page_data['submit_offer'] = True - try: page_data['amt_from'] = form_data[b'amt_from'][0].decode('utf-8') parsed_data['amt_from'] = inputAmount(page_data['amt_from'], ci_from) @@ -361,13 +345,42 @@ class HttpHandler(BaseHTTPRequestHandler): if 'amt_to' in parsed_data and 'amt_from' in parsed_data: parsed_data['rate'] = int((parsed_data['amt_to'] / parsed_data['amt_from']) * ci_from.COIN()) - page_data['lockhrs'] = int(form_data[b'lockhrs'][0]) - parsed_data['lock_seconds'] = page_data['lockhrs'] * 60 * 60 + if b'step1' in form_data: + if len(errors) == 0 and b'continue' in form_data: + page_data['step2'] = True + return parsed_data, errors + + page_data['step2'] = True + + if b'fee_from_conf' in form_data: + page_data['fee_from_conf'] = int(form_data[b'fee_from_conf'][0]) + parsed_data['fee_from_conf'] = page_data['fee_from_conf'] + + if b'fee_from_extra' in form_data: + page_data['fee_from_extra'] = int(form_data[b'fee_from_extra'][0]) + parsed_data['fee_from_extra'] = page_data['fee_from_extra'] + + if b'fee_to_conf' in form_data: + page_data['fee_to_conf'] = int(form_data[b'fee_to_conf'][0]) + parsed_data['fee_to_conf'] = page_data['fee_to_conf'] + + if b'fee_to_extra' in form_data: + page_data['fee_to_extra'] = int(form_data[b'fee_to_extra'][0]) + parsed_data['fee_to_extra'] = page_data['fee_to_extra'] + + if b'check_offer' in form_data: + page_data['check_offer'] = True + if b'submit_offer' in form_data: + page_data['submit_offer'] = True + + if b'lockhrs' in form_data: + page_data['lockhrs'] = int(form_data[b'lockhrs'][0]) + parsed_data['lock_seconds'] = page_data['lockhrs'] * 60 * 60 page_data['autoaccept'] = True if b'autoaccept' in form_data else False parsed_data['autoaccept'] = page_data['autoaccept'] - if len(errors) == 0: + if len(errors) == 0 and page_data['swap_style'] == 'xmr': if b'fee_rate_from' in form_data: page_data['from_fee_override'] = form_data[b'fee_rate_from'][0].decode('utf-8') parsed_data['from_fee_override'] = page_data['from_fee_override'] @@ -378,18 +391,18 @@ class HttpHandler(BaseHTTPRequestHandler): page_data['from_fee_override'] = ci_from.format_amount(ci_from.make_int(from_fee_override, r=1)) parsed_data['from_fee_override'] = page_data['from_fee_override'] - if b'fee_rate_to' in form_data: - page_data['to_fee_override'] = form_data[b'fee_rate_to'][0].decode('utf-8') - parsed_data['to_fee_override'] = page_data['to_fee_override'] - else: - to_fee_override, page_data['to_fee_src'] = swap_client.getFeeRateForCoin(parsed_data['coin_to'], page_data['fee_to_conf']) - if page_data['fee_to_extra'] > 0: - to_fee_override += to_fee_override * (float(page_data['fee_to_extra']) / 100.0) + if coin_to == Coins.XMR: + if b'fee_rate_to' in form_data: + page_data['to_fee_override'] = form_data[b'fee_rate_to'][0].decode('utf-8') + parsed_data['to_fee_override'] = page_data['to_fee_override'] + else: + to_fee_override, page_data['to_fee_src'] = swap_client.getFeeRateForCoin(parsed_data['coin_to'], page_data['fee_to_conf']) + if page_data['fee_to_extra'] > 0: + to_fee_override += to_fee_override * (float(page_data['fee_to_extra']) / 100.0) + page_data['to_fee_override'] = ci_to.format_amount(ci_to.make_int(to_fee_override, r=1)) + parsed_data['to_fee_override'] = page_data['to_fee_override'] - page_data['to_fee_override'] = ci_to.format_amount(ci_to.make_int(to_fee_override, r=1)) - parsed_data['to_fee_override'] = page_data['to_fee_override'] - - return page_data, parsed_data, errors + return parsed_data, errors def postNewOfferFromParsed(self, parsed_data): swap_client = self.server.swap_client @@ -434,19 +447,26 @@ class HttpHandler(BaseHTTPRequestHandler): return offer_id def postNewOffer(self, form_data): - page_data, parsed_data = self.parseOfferFormData(form_data) + page_data = {} + parsed_data = self.parseOfferFormData(form_data, page_data) return self.postNewOfferFromParsed(parsed_data) def page_newoffer(self, url_split, post_string): swap_client = self.server.swap_client messages = [] - page_data = {} + page_data = { + # Set defaults + 'fee_from_conf': 2, + 'fee_to_conf': 2, + 'lockhrs': 32, + 'autoaccept': True + } form_data = self.checkForm(post_string, 'newoffer', messages) if form_data: try: - page_data, parsed_data, errors = self.parseOfferFormData(form_data) + parsed_data, errors = self.parseOfferFormData(form_data, page_data) for e in errors: messages.append('Error: {}'.format(str(e))) except Exception as e: @@ -460,17 +480,12 @@ class HttpHandler(BaseHTTPRequestHandler): except Exception as e: messages.append('Error: {}'.format(str(e))) - if not page_data: - # Set defaults - page_data['fee_from_conf'] = 2 - page_data['fee_to_conf'] = 2 - page_data['lockhrs'] = 32 - page_data['autoaccept'] = True - if len(messages) == 0 and 'check_offer' in page_data: template = env.get_template('offer_confirm.html') + elif 'step2' in page_data: + template = env.get_template('offer_new_2.html') else: - template = env.get_template('offer_new.html') + template = env.get_template('offer_new_1.html') return bytes(template.render( title=self.server.title, @@ -536,7 +551,6 @@ class HttpHandler(BaseHTTPRequestHandler): } if xmr_offer: - int_fee_rate_now, fee_source = ci_from.get_fee_rate() data['xmr_type'] = True data['a_fee_rate'] = ci_from.format_amount(xmr_offer.a_fee_rate) diff --git a/basicswap/templates/offer.html b/basicswap/templates/offer.html index 875734e..a24ec3c 100644 --- a/basicswap/templates/offer.html +++ b/basicswap/templates/offer.html @@ -42,6 +42,7 @@
{% if data.show_bid_form %}

New Bid

+

You will send {{ data.amt_to }} {{ data.tla_to }} and receive {{ data.amt_from }} {{ data.tla_from }}

- +
Send From Address
{% else %} -{% endif %} {% if data.sent == 'True' and data.was_revoked != true %} {% endif %} +{% endif %}
diff --git a/basicswap/templates/offer_confirm.html b/basicswap/templates/offer_confirm.html index 9543f64..2978859 100644 --- a/basicswap/templates/offer_confirm.html +++ b/basicswap/templates/offer_confirm.html @@ -22,6 +22,7 @@ {% endfor %} Amount FromThe amount you will send. +{% if data.swap_style == 'xmr' %} Fee Rate FromFee Rate Source{{ data.from_fee_src }} Fee From Confirm Target Fee From Extra Fee @@ -31,6 +32,7 @@ +{% endif %} Coin To Amount ToThe amount you will receive. -Fee Rate FromFee Rate Source{{ data.to_fee_src }} +{% if data.swap_style == 'xmr' and coin_to != '6' %} +Fee Rate ToFee Rate Source{{ data.to_fee_src }} Fee To Confirm Target Fee To Extra Fee +{% endif %} Contract locked (hrs){% if data.swap_style != 'xmr' %}Participate txn will be locked for half the time.{% endif %} -Auto Accept Bids +Auto Accept Bids - + +{% if data.autoaccept==true %} + +{% endif %}

home

diff --git a/basicswap/templates/offer_new_1.html b/basicswap/templates/offer_new_1.html new file mode 100644 index 0000000..34b73d8 --- /dev/null +++ b/basicswap/templates/offer_new_1.html @@ -0,0 +1,41 @@ +{% include 'header.html' %} + +

New Offer

+{% for m in messages %} +

{{ m }}

+{% endfor %} + +
+ + + + + + + +
Send From Address
Coin From + +Amount FromThe amount you will send.
Coin To + +Amount ToThe amount you will receive.
+ + + + +
+ +

home

+ diff --git a/basicswap/templates/offer_new.html b/basicswap/templates/offer_new_2.html similarity index 73% rename from basicswap/templates/offer_new.html rename to basicswap/templates/offer_new_2.html index 0e69fbc..bb3a229 100644 --- a/basicswap/templates/offer_new.html +++ b/basicswap/templates/offer_new_2.html @@ -8,7 +8,7 @@
- + +{% if data.swap_style == 'xmr' %} +{% endif %} + +{% if data.swap_style == 'xmr' and coin_to != '6' %} +{% endif %} - +
Send From Address
Send From Address
Coin From - {% for c in coins %} {{ c[1] }} {% endfor %} -Amount FromThe amount you will send.
Amount FromThe amount you will send.
Fee From Confirm Target
Fee From Extra Fee
Coin To - {% for c in coins %} {{ c[1] }} {% endfor %} -Amount ToThe amount you will receive.
Amount ToThe amount you will receive.
Fee To Confirm Target
Fee To Extra Fee
Contract locked (hrs)Participate txn will be locked for half the time.
Auto Accept Bids
Auto Accept Bids
- + + + + +

home