improved launchTrade function
This commit is contained in:
parent
7a9204d308
commit
8c7fa7a25d
126
index.html
126
index.html
@ -11627,7 +11627,7 @@
|
|||||||
|
|
||||||
const ENVR = 'TEST'; // LIVE, TEST
|
const ENVR = 'TEST'; // LIVE, TEST
|
||||||
const WS = 'ws';
|
const WS = 'ws';
|
||||||
const DBName = "localbitcoinDB";
|
const DBName = "localbitcoinDBRemote";
|
||||||
|
|
||||||
if(ENVR === 'LIVE') {
|
if(ENVR === 'LIVE') {
|
||||||
|
|
||||||
@ -20331,8 +20331,10 @@
|
|||||||
RM_TRADE.launchTrade(
|
RM_TRADE.launchTrade(
|
||||||
buyPipe.value[i],
|
buyPipe.value[i],
|
||||||
sellPipe.value[i],
|
sellPipe.value[i],
|
||||||
function(supernode_res) {
|
backup_db
|
||||||
if (typeof supernode_res == "object") {
|
).then(supernode_res=>{
|
||||||
|
if (supernode_res!==false
|
||||||
|
&& typeof supernode_res == "object") {
|
||||||
RM_RPC.send_rpc
|
RM_RPC.send_rpc
|
||||||
.call(
|
.call(
|
||||||
this,
|
this,
|
||||||
@ -20341,9 +20343,7 @@
|
|||||||
)
|
)
|
||||||
.then(server_res => doSend(server_res));
|
.then(server_res => doSend(server_res));
|
||||||
}
|
}
|
||||||
},
|
});
|
||||||
backup_db
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -20356,7 +20356,7 @@
|
|||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
launchTrade(buyPipeObj, sellPipeObj, callback, backup_db = "") {
|
async launchTrade(buyPipeObj, sellPipeObj, backup_db = "") {
|
||||||
let _addDB = addDB;
|
let _addDB = addDB;
|
||||||
let _readDB = readDB;
|
let _readDB = readDB;
|
||||||
let _readDBbyIndex = readDBbyIndex;
|
let _readDBbyIndex = readDBbyIndex;
|
||||||
@ -20397,21 +20397,18 @@
|
|||||||
let err_msg;
|
let err_msg;
|
||||||
// Check buyer's cash balance
|
// Check buyer's cash balance
|
||||||
const buyer_cash_id = `${buyPipeObj.trader_flo_address}_${buyPipeObj.currency}`;
|
const buyer_cash_id = `${buyPipeObj.trader_flo_address}_${buyPipeObj.currency}`;
|
||||||
_readDB("cash_balances", buyer_cash_id).then(function(
|
const buyPipeCashRes = await _readDB("cash_balances", buyer_cash_id);
|
||||||
buyPipeCashRes
|
|
||||||
) {
|
|
||||||
if (
|
if (
|
||||||
typeof buyPipeCashRes == "object" &&
|
typeof buyPipeCashRes == "object" &&
|
||||||
typeof buyPipeCashRes.cash_balance == "number"
|
typeof buyPipeCashRes.cash_balance == "number"
|
||||||
) {
|
) {
|
||||||
let buyer_cash_balance = parseFloat(
|
let buyer_cash_balance = parseFloat(buyPipeCashRes.cash_balance);
|
||||||
buyPipeCashRes.cash_balance
|
|
||||||
);
|
|
||||||
let buy_price_btc = parseFloat(buyPipeObj.buy_price);
|
let buy_price_btc = parseFloat(buyPipeObj.buy_price);
|
||||||
if (buyer_cash_balance < buy_price_btc) {
|
if (buyer_cash_balance < buy_price_btc) {
|
||||||
err_msg = "Insufficient cash balance of buyer.";
|
err_msg = "Insufficient cash balance of buyer.";
|
||||||
showMessage(err_msg);
|
console.warn(err_msg);
|
||||||
throw new Error(err_msg);
|
return false;
|
||||||
}
|
}
|
||||||
// calculate equivalent BTC for x amount of Cash
|
// calculate equivalent BTC for x amount of Cash
|
||||||
let eqBTCBuyer = RM_TRADE.calculateCryptoEquivalentOfCash(
|
let eqBTCBuyer = RM_TRADE.calculateCryptoEquivalentOfCash(
|
||||||
@ -20430,9 +20427,7 @@
|
|||||||
|
|
||||||
// Check seller's crypto balance
|
// Check seller's crypto balance
|
||||||
let seller_btc_id = `${sellPipeObj.trader_flo_address}_${sellPipeObj.product}`;
|
let seller_btc_id = `${sellPipeObj.trader_flo_address}_${sellPipeObj.product}`;
|
||||||
_readDB("crypto_balances", seller_btc_id).then(function(
|
const sellPipeBTCRes = await _readDB("crypto_balances", seller_btc_id);
|
||||||
sellPipeBTCRes
|
|
||||||
) {
|
|
||||||
if (
|
if (
|
||||||
typeof sellPipeBTCRes == "object" &&
|
typeof sellPipeBTCRes == "object" &&
|
||||||
typeof sellPipeBTCRes.crypto_balance == "number"
|
typeof sellPipeBTCRes.crypto_balance == "number"
|
||||||
@ -20452,16 +20447,16 @@
|
|||||||
eqBTCSeller = helper_functions.truncateDecimals(eqBTCSeller);
|
eqBTCSeller = helper_functions.truncateDecimals(eqBTCSeller);
|
||||||
if (seller_btc_balance < eqBTCSeller) {
|
if (seller_btc_balance < eqBTCSeller) {
|
||||||
err_msg = "Insufficient BTC balance of seller.";
|
err_msg = "Insufficient BTC balance of seller.";
|
||||||
showMessage(err_msg);
|
console.warn(err_msg);
|
||||||
throw new Error(err_msg);
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Increase buyer's crypto balance
|
// Get Buyer's crypto balance
|
||||||
let buyerBTCResponseObject;
|
let buyerBTCResponseObject;
|
||||||
let buyer_btc_id = `${buyPipeObj.trader_flo_address}_${buyPipeObj.product}`;
|
let buyer_btc_id = `${buyPipeObj.trader_flo_address}_${buyPipeObj.product}`;
|
||||||
_readDB("crypto_balances", buyer_btc_id).then(function(
|
const buyPipeBTCRes = await _readDB("crypto_balances", buyer_btc_id);
|
||||||
buyPipeBTCRes
|
|
||||||
) {
|
// Increase buyer's crypto balance
|
||||||
if (
|
if (
|
||||||
typeof buyPipeBTCRes == "object" &&
|
typeof buyPipeBTCRes == "object" &&
|
||||||
typeof buyPipeBTCRes.crypto_balance == "number"
|
typeof buyPipeBTCRes.crypto_balance == "number"
|
||||||
@ -20480,23 +20475,12 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Decrease buyer cash balance
|
// Get Seller's cash balance
|
||||||
let buyer_new_cash_balance =
|
|
||||||
buyer_cash_balance - buy_price_btc;
|
|
||||||
|
|
||||||
let buyerCashResponseObject = {
|
|
||||||
id: buyer_cash_id,
|
|
||||||
currency: buyPipeObj.currency,
|
|
||||||
trader_flo_address: buyPipeObj.trader_flo_address,
|
|
||||||
cash_balance: buyer_new_cash_balance
|
|
||||||
};
|
|
||||||
|
|
||||||
// Increase seller's Cash balance
|
|
||||||
let sellerCashResponseObject;
|
let sellerCashResponseObject;
|
||||||
const seller_cash_id = `${sellPipeObj.trader_flo_address}_${buyPipeObj.currency}`;
|
const seller_cash_id = `${sellPipeObj.trader_flo_address}_${buyPipeObj.currency}`;
|
||||||
_readDB("cash_balances", seller_cash_id).then(function(
|
const sellPipeCashRes = await _readDB("cash_balances", seller_cash_id);
|
||||||
sellPipeCashRes
|
|
||||||
) {
|
// Increase seller's Cash balance
|
||||||
if (
|
if (
|
||||||
typeof sellPipeCashRes == "object" &&
|
typeof sellPipeCashRes == "object" &&
|
||||||
typeof sellPipeCashRes.cash_balance == "number" &&
|
typeof sellPipeCashRes.cash_balance == "number" &&
|
||||||
@ -20518,22 +20502,17 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Decrease seller BTC balance
|
// Decrease buyer cash balance
|
||||||
let new_seller_btc_balance =
|
buyPipeCashRes.cash_balance = buyer_cash_balance - buy_price_btc;
|
||||||
seller_btc_balance - eqBTCSeller;
|
let buyerCashResponseObject = buyPipeCashRes;
|
||||||
new_seller_btc_balance = helper_functions.truncateDecimals(new_seller_btc_balance);
|
|
||||||
|
|
||||||
let sellerBTCResponseObject = {
|
// Decrease seller BTC balance
|
||||||
id: `${sellPipeObj.trader_flo_address}_${sellPipeObj.product}`,
|
sellPipeBTCRes.crypto_balance = helper_functions.truncateDecimals(seller_btc_balance - eqBTCSeller);
|
||||||
trader_flo_address: sellPipeObj.trader_flo_address,
|
|
||||||
crypto_balance: new_seller_btc_balance,
|
let sellerBTCResponseObject = sellPipeBTCRes;
|
||||||
crypto_currency: sellPipeObj.product
|
|
||||||
};
|
|
||||||
|
|
||||||
// supernode data query
|
// supernode data query
|
||||||
readDB("localbitcoinUser", "00-01").then(async function(
|
const user_data = await readDB("localbitcoinUser", "00-01");
|
||||||
user_data
|
|
||||||
) {
|
|
||||||
if (
|
if (
|
||||||
typeof user_data == "object" &&
|
typeof user_data == "object" &&
|
||||||
typeof localbitcoinplusplus.wallets
|
typeof localbitcoinplusplus.wallets
|
||||||
@ -20543,26 +20522,16 @@
|
|||||||
) {
|
) {
|
||||||
// Delete orders
|
// Delete orders
|
||||||
try {
|
try {
|
||||||
_removeinDB("buyOrders", buyPipeObj.id);
|
await _removeinDB("buyOrders", buyPipeObj.id);
|
||||||
_removeinDB("sellOrders", sellPipeObj.id);
|
await _removeinDB("sellOrders", sellPipeObj.id);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
callback(false);
|
console.error(`WARNING: Failed to delete respective buy
|
||||||
showMessage(
|
and sell orders in an operation:
|
||||||
`WARNING: Failed to delete respective buy and sell orders in an operation.`
|
${error} `);
|
||||||
);
|
return false;
|
||||||
throw new Error(error);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update balances
|
// Update balances
|
||||||
try {
|
|
||||||
|
|
||||||
} catch (error) {
|
|
||||||
showMessage(
|
|
||||||
`WARNING: Failed to update cash and crypto balances during launch trade operation.`
|
|
||||||
);
|
|
||||||
callback(false);
|
|
||||||
throw new Error(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
let buyerCashResponseObjectPromise = _updateinDB(
|
let buyerCashResponseObjectPromise = _updateinDB(
|
||||||
"cash_balances",
|
"cash_balances",
|
||||||
@ -20590,7 +20559,10 @@
|
|||||||
sellerCashResponseObjectPromise,
|
sellerCashResponseObjectPromise,
|
||||||
buyerBTCResponseObjectPromise,
|
buyerBTCResponseObjectPromise,
|
||||||
sellerBTCResponseObjectPromise
|
sellerBTCResponseObjectPromise
|
||||||
]);
|
]).catch(error=>{
|
||||||
|
console.error(error);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
// Prepare response
|
// Prepare response
|
||||||
let trade_infos = {
|
let trade_infos = {
|
||||||
@ -20643,19 +20615,13 @@
|
|||||||
trader_flo_address:
|
trader_flo_address:
|
||||||
getPrimarySuObj[0].data.id
|
getPrimarySuObj[0].data.id
|
||||||
};
|
};
|
||||||
callback(response_for_client);
|
return response_for_client;
|
||||||
return true;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
} else return false;
|
||||||
});
|
} else return false;
|
||||||
}
|
|
||||||
});
|
|
||||||
callback(false);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
cancelTrade(trade_id, trader_flo_address, trade_type) {
|
cancelTrade(trade_id, trader_flo_address, trade_type) {
|
||||||
@ -29130,10 +29096,10 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
this.request.onsuccess = function(event) {
|
this.request.onsuccess = function(event) {
|
||||||
|
if (parent_request.result) {
|
||||||
if(!exception_datastores.includes(tablename)) {
|
if(!exception_datastores.includes(tablename)) {
|
||||||
if(!verifyDBData(parent_request.result)) return resolve();
|
if(!verifyDBData(parent_request.result)) return resolve();
|
||||||
}
|
}
|
||||||
if (parent_request.result) {
|
|
||||||
if (filter_deletables == true) {
|
if (filter_deletables == true) {
|
||||||
if (
|
if (
|
||||||
typeof parent_request.result.is_deletable == "undefined"
|
typeof parent_request.result.is_deletable == "undefined"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user