|
|
|
@ -346,6 +346,10 @@ class TradePortal extends LitElement {
|
|
|
|
|
background-image: url('/img/qortdoge.png'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.rvn.coinName:before { |
|
|
|
|
background-image: url('/img/qortrvn.png'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.coinName { |
|
|
|
|
display: inline-block; |
|
|
|
|
height: 26px; |
|
|
|
@ -444,10 +448,26 @@ class TradePortal extends LitElement {
|
|
|
|
|
coinAmount: this.amountString |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
let ravencoin = { |
|
|
|
|
name: "RAVENCOIN", |
|
|
|
|
balance: "0", |
|
|
|
|
coinCode: "RVN", |
|
|
|
|
openOrders: [], |
|
|
|
|
openFilteredOrders: [], |
|
|
|
|
historicTrades: [], |
|
|
|
|
myOrders: [], |
|
|
|
|
myHistoricTrades: [], |
|
|
|
|
myOfferingOrders: [], |
|
|
|
|
openTradeOrders: null, |
|
|
|
|
tradeOffersSocketCounter: 1, |
|
|
|
|
coinAmount: this.amountString |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
this.listedCoins = new Map() |
|
|
|
|
this.listedCoins.set("QORTAL", qortal) |
|
|
|
|
this.listedCoins.set("LITECOIN", litecoin) |
|
|
|
|
this.listedCoins.set("DOGECOIN", dogecoin) |
|
|
|
|
this.listedCoins.set("RAVENCOIN", ravencoin) |
|
|
|
|
|
|
|
|
|
workers.set("QORTAL", { |
|
|
|
|
tradesConnectedWorker: null, |
|
|
|
@ -464,6 +484,11 @@ class TradePortal extends LitElement {
|
|
|
|
|
handleStuckTradesConnectedWorker: null |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
workers.set("RAVENCOIN", { |
|
|
|
|
tradesConnectedWorker: null, |
|
|
|
|
handleStuckTradesConnectedWorker: null |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
this.selectedCoin = "LITECOIN" |
|
|
|
|
this.selectedAddress = {} |
|
|
|
|
this.config = {} |
|
|
|
@ -846,6 +871,7 @@ class TradePortal extends LitElement {
|
|
|
|
|
<mwc-select outlined id="coinSelectionMenu" label="${translate("tradepage.tchange2")}"> |
|
|
|
|
<mwc-list-item value="LITECOIN" selected><span class="coinName ltc" style="color: var(--black);">QORT / LTC</span></mwc-list-item> |
|
|
|
|
<mwc-list-item value="DOGECOIN"><span class="coinName doge" style="color: var(--black);">QORT / DOGE</span></mwc-list-item> |
|
|
|
|
<mwc-list-item value="RAVENCOIN"><span class="coinName rvn" style="color: var(--black);">QORT / RVN</span></mwc-list-item> |
|
|
|
|
</mwc-select> |
|
|
|
|
</div> |
|
|
|
|
<div id="trade-portal"> |
|
|
|
@ -1008,6 +1034,10 @@ class TradePortal extends LitElement {
|
|
|
|
|
_url = `/crosschain/doge/walletbalance?apiKey=${this.getApiKey()}` |
|
|
|
|
_body = window.parent.reduxStore.getState().app.selectedAddress.dogeWallet.derivedMasterPublicKey |
|
|
|
|
break |
|
|
|
|
case 'RAVENCOIN': |
|
|
|
|
_url = `/crosschain/rvn/walletbalance?apiKey=${this.getApiKey()}` |
|
|
|
|
_body = window.parent.reduxStore.getState().app.selectedAddress.rvnWallet.derivedMasterPublicKey |
|
|
|
|
break |
|
|
|
|
default: |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
@ -1020,7 +1050,7 @@ class TradePortal extends LitElement {
|
|
|
|
|
.then((res) => { |
|
|
|
|
if (isNaN(Number(res))) { |
|
|
|
|
let snack1string = get("tradepage.tchange30") |
|
|
|
|
parentEpml.request('showSnackBar', `${snack1tring}`) |
|
|
|
|
parentEpml.request('showSnackBar', `${snack1string}`) |
|
|
|
|
} else { |
|
|
|
|
this.listedCoins.get(this.selectedCoin).balance = (Number(res) / 1e8).toFixed(8) |
|
|
|
|
} |
|
|
|
@ -1385,6 +1415,49 @@ class TradePortal extends LitElement {
|
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* RavencoinACCTv1 TRADEBOT STATES |
|
|
|
|
* - BOB_WAITING_FOR_AT_CONFIRM |
|
|
|
|
* - BOB_WAITING_FOR_MESSAGE |
|
|
|
|
* - BOB_WAITING_FOR_AT_REDEEM |
|
|
|
|
* - BOB_DONE |
|
|
|
|
* - BOB_REFUNDED |
|
|
|
|
* - ALICE_WAITING_FOR_AT_LOCK |
|
|
|
|
* - ALICE_DONE |
|
|
|
|
* - ALICE_REFUNDING_A |
|
|
|
|
* - ALICE_REFUNDED |
|
|
|
|
* |
|
|
|
|
* @param {[{}]} states |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
const RavencoinACCTv1 = (states) => { |
|
|
|
|
// Reverse the states
|
|
|
|
|
states.reverse() |
|
|
|
|
states.forEach((state) => { |
|
|
|
|
if (state.creatorAddress === this.selectedAddress.address) { |
|
|
|
|
if (state.tradeState == 'BOB_WAITING_FOR_AT_CONFIRM') { |
|
|
|
|
this.changeTradeBotState(state, 'PENDING') |
|
|
|
|
} else if (state.tradeState == 'BOB_WAITING_FOR_MESSAGE') { |
|
|
|
|
this.changeTradeBotState(state, 'LISTED') |
|
|
|
|
} else if (state.tradeState == 'BOB_WAITING_FOR_AT_REDEEM') { |
|
|
|
|
this.changeTradeBotState(state, 'TRADING') |
|
|
|
|
} else if (state.tradeState == 'BOB_DONE') { |
|
|
|
|
this.handleCompletedState(state) |
|
|
|
|
} else if (state.tradeState == 'BOB_REFUNDED') { |
|
|
|
|
this.handleCompletedState(state) |
|
|
|
|
} else if (state.tradeState == 'ALICE_WAITING_FOR_AT_LOCK') { |
|
|
|
|
this.changeTradeBotState(state, 'BUYING') |
|
|
|
|
} else if (state.tradeState == 'ALICE_DONE') { |
|
|
|
|
this.handleCompletedState(state) |
|
|
|
|
} else if (state.tradeState == 'ALICE_REFUNDING_A') { |
|
|
|
|
this.changeTradeBotState(state, 'REFUNDING') |
|
|
|
|
} else if (state.tradeState == 'ALICE_REFUNDED') { |
|
|
|
|
this.handleCompletedState(state) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
switch (this.selectedCoin) { |
|
|
|
|
case 'BITCOIN': |
|
|
|
|
BitcoinACCTv1(tradeStates) |
|
|
|
@ -1395,6 +1468,9 @@ class TradePortal extends LitElement {
|
|
|
|
|
case 'DOGECOIN': |
|
|
|
|
DogecoinACCTv1(tradeStates) |
|
|
|
|
break |
|
|
|
|
case 'RAVENCOIN': |
|
|
|
|
RavencoinACCTv1(tradeStates) |
|
|
|
|
break |
|
|
|
|
default: |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
@ -1640,19 +1716,19 @@ class TradePortal extends LitElement {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const restartPresenceWebSocket = () => { |
|
|
|
|
setTimeout(() => initPresenceWebSocket(true), 3000) |
|
|
|
|
setTimeout(() => initPresenceWebSocket(true), 5000) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const restartTradePresenceWebSocket = () => { |
|
|
|
|
setTimeout(() => initTradePresenceWebSocket(true), 3000) |
|
|
|
|
setTimeout(() => initTradePresenceWebSocket(true), 5000) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const restartTradeOffersWebSocket = () => { |
|
|
|
|
setTimeout(() => initTradeOffersWebSocket(true), 3000) |
|
|
|
|
setTimeout(() => initTradeOffersWebSocket(true), 5000) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const restartTradeBotWebSocket = () => { |
|
|
|
|
setTimeout(() => initTradeBotWebSocket(true), 3000) |
|
|
|
|
setTimeout(() => initTradeBotWebSocket(true), 5000) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Start TradeOffersWebSocket
|
|
|
|
@ -1684,6 +1760,9 @@ class TradePortal extends LitElement {
|
|
|
|
|
case 'DOGECOIN': |
|
|
|
|
_receivingAddress = this.selectedAddress.dogeWallet.address |
|
|
|
|
break |
|
|
|
|
case 'RAVENCOIN': |
|
|
|
|
_receivingAddress = this.selectedAddress.rvnWallet.address |
|
|
|
|
break |
|
|
|
|
default: |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
@ -1710,12 +1789,12 @@ class TradePortal extends LitElement {
|
|
|
|
|
this.isSellLoading = false |
|
|
|
|
this.sellBtnDisable = false |
|
|
|
|
let snack2string = get("tradepage.tchange20") |
|
|
|
|
parentEpml.request('showSnackBar', `${snack2tring}`) |
|
|
|
|
parentEpml.request('showSnackBar', `${snack2string}`) |
|
|
|
|
} else { |
|
|
|
|
this.isSellLoading = false |
|
|
|
|
this.sellBtnDisable = false |
|
|
|
|
let snack3string = get("tradepage.tchange21") |
|
|
|
|
parentEpml.request('showSnackBar', `${snack3tring}: ${response.message}`) |
|
|
|
|
parentEpml.request('showSnackBar', `${snack3string}: ${response.message}`) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -1723,7 +1802,7 @@ class TradePortal extends LitElement {
|
|
|
|
|
this.isSellLoading = false |
|
|
|
|
this.sellBtnDisable = false |
|
|
|
|
let snack4string = get("tradepage.tchange22") |
|
|
|
|
parentEpml.request('showSnackBar', `${snack4tring}`) |
|
|
|
|
parentEpml.request('showSnackBar', `${snack4string}`) |
|
|
|
|
return false |
|
|
|
|
} else { |
|
|
|
|
const res = await makeRequest() |
|
|
|
@ -1744,6 +1823,9 @@ class TradePortal extends LitElement {
|
|
|
|
|
case 'DOGECOIN': |
|
|
|
|
_foreignKey = this.selectedAddress.dogeWallet.derivedMasterPrivateKey |
|
|
|
|
break |
|
|
|
|
case 'RAVENCOIN': |
|
|
|
|
_foreignKey = this.selectedAddress.rvnWallet.derivedMasterPrivateKey |
|
|
|
|
break |
|
|
|
|
default: |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
@ -1766,17 +1848,17 @@ class TradePortal extends LitElement {
|
|
|
|
|
this.shadowRoot.getElementById('buyTotalInput').value = this.initialAmount |
|
|
|
|
this.shadowRoot.getElementById('qortalAtAddress').value = '' |
|
|
|
|
let snack5string = get("tradepage.tchange23") |
|
|
|
|
parentEpml.request('showSnackBar', `${snack5tring}`) |
|
|
|
|
parentEpml.request('showSnackBar', `${snack5string}`) |
|
|
|
|
} else if (response === false) { |
|
|
|
|
this.isBuyLoading = false |
|
|
|
|
this.buyBtnDisable = false |
|
|
|
|
let snack6string = get("tradepage.tchange24") |
|
|
|
|
parentEpml.request('showSnackBar', `${snack6tring}`) |
|
|
|
|
parentEpml.request('showSnackBar', `${snack6string}`) |
|
|
|
|
} else { |
|
|
|
|
this.isBuyLoading = false |
|
|
|
|
this.buyBtnDisable = false |
|
|
|
|
let snack7string = get("tradepage.tchange25") |
|
|
|
|
parentEpml.request('showSnackBar', `${snack7tring}: ${response.message}`) |
|
|
|
|
parentEpml.request('showSnackBar', `${snack7string}: ${response.message}`) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -1803,12 +1885,12 @@ class TradePortal extends LitElement {
|
|
|
|
|
button.remove() |
|
|
|
|
this.cancelBtnDisable = false |
|
|
|
|
let snack8string = get("tradepage.tchange26") |
|
|
|
|
parentEpml.request('showSnackBar', `${snack8tring}`) |
|
|
|
|
parentEpml.request('showSnackBar', `${snack8string}`) |
|
|
|
|
} else if (response === false) { |
|
|
|
|
button.innerHTML = 'CANCEL' |
|
|
|
|
this.cancelBtnDisable = false |
|
|
|
|
let snack9string = get("tradepage.tchange27") |
|
|
|
|
parentEpml.request('showSnackBar', `${snack9tring}`) |
|
|
|
|
parentEpml.request('showSnackBar', `${snack9string}`) |
|
|
|
|
} else { |
|
|
|
|
button.innerHTML = 'CANCEL' |
|
|
|
|
this.cancelBtnDisable = false |
|
|
|
|