function explore_swap_offers_creator(div2, hide_server_select) {
var div = document.getElementById("explore_swap_offers");
if(!(div)){
div = div2;
if(!(div2)){
return(0);
};
};
var display = document.createElement("p");
div.appendChild(display);
var refresh_button = button_maker2("refresh list of markets", refresh);
var s_ip, s_port;
if(!(hide_server_select)){
s_ip = text_input("server ip: ", div);
s_port = text_input("server port: ", div);
div.appendChild(br());
div.appendChild(br());
} else {
s_ip = document.createElement("p");
s_port = document.createElement("p");
}
s_ip.value = get_ip();
s_port.value = "8090";
div.appendChild(refresh_button);
div.appendChild(br());
var temp_div = document.createElement("div");
div.appendChild(temp_div);
var orders_div = document.createElement("div");
async function refresh(){
var l = await rpc.apost(["markets"], s_ip.value, parseInt(s_port.value));
l = l.slice(1);
temp_div.innerHTML = "
available markets
";
market_buttons(l);
};
refresh();
async function decode_market_veo_contract(cid, contract){
var txs = await rpc.apost(["txs"]);
txs = txs.slice(1);
var r = await buy_veo_contract.get_deposit_address(cid, txs);
var address = r.address;
var contract_string = " type 2 wins if "
.concat(atob(contract[7]))
.concat(" of ")
.concat(atob(contract[8]))
.concat(" in blockchain ")
.concat(atob(contract[6]))
.concat(" is delivered to ")
.concat(address)
.concat(" by date: ")
.concat(atob(contract[9]))
.concat(" , or if the address isn't valid for that blockchain. ");
var s = cid
.concat(": ")
.concat(contract_string);
return(s);
};
async function market_buttons(l){
if((l.length) == 0){
return(0);
};
var m = l[0];
var cid1 = m[3];
var type1 = m[4];
var cid2 = m[5];
var type2 = m[6];
var name = "";
if(type1 == 0) {
name = name.concat("they sell veo and ");
} else {
name = name
.concat("they sell subcurrency id ")
.concat(cid1)
.concat(" with type ")
.concat(type1)
.concat(" ");
}
if(type2 == 0) {
name = name.concat("they buy veo.");
} else {
name = name
.concat("they buy subcurrency id ")
.concat(cid2)
.concat(" with type ")
.concat(type2)
.concat(" ");
}
var button = button_maker2(name, async function(){
var z = await rpc.apost(["read", m[2]], s_ip.value, parseInt(s_port.value));
var orders = z[1][7];
orders = orders.slice(1);
orders_div.innerHTML = "available trades" //in market "
//.concat(m[2])
.concat("
");
temp_div.appendChild(orders_div);
display_orders(orders);
});
temp_div.appendChild(button);
//["market", nonce, mid, cid1, type1, cid2, type2, 0]
var contract1 = await rpc.apost(["read", 3, cid1], s_ip.value, parseInt(s_port.value));
var contract2 = await rpc.apost(["read", 3, cid2], s_ip.value, parseInt(s_port.value));
await buy_veo_viewer(temp_div, contract1, cid1);
await buy_veo_viewer(temp_div, contract2, cid2);
return(market_buttons(l.slice(1)));
};
async function buy_veo_viewer(temp_div, contract, cid){
if(contract){
var p = document.createElement("span");
var a = document.createElement("a");
a.innerHTML = "more details";
a.href = "explorers/contract_explorer.html?cid=".concat(cid);
a.target = "_blank";
if(contract[0] === "contract"){
p.innerHTML = await decode_market_veo_contract(cid, contract);
} else {
p.innerHTML = cid
.concat(": ")
.concat(atob(contract[1]));
}
temp_div.appendChild(p);
temp_div.appendChild(a);
temp_div.appendChild(document.createElement("br"));
};
};
function display_orders(l){
if((l.length) == 0) {
return(0);
};
var order = l[0];
var Maximum = 4294967295;
var price = order[1] / Maximum;
var amount = order[2];
var tid = order[3];
//-record(order, {price, amount, tid}).
var name = "price is "
.concat(price.toFixed(4))
.concat(" amount is ")
.concat(amount / token_units())
.concat(". click to see more details.");
var button = button_maker2(name, function(){
trade_details(tid);
});
orders_div.appendChild(button);
return(display_orders(l.slice(1)));
};
async function trade_details(tid){
//if it is your own swap offer, then make a cancel offer button. todo.
var t = await rpc.apost(["read", 2, tid], s_ip.value, parseInt(s_port.value));
console.log(JSON.stringify(t));
swap_viewer.offer(JSON.stringify(t));
swap_viewer.view();
};
return({
ip: function(x){s_ip.value = x},
ip_get: s_ip.value,
port: function(x){s_port.value = x},
port_get: parseInt(s_port.value),
refresh: refresh
});
};
var explore_swap_offer = (explore_swap_offers_creator());