Corrected Offers response data.

This commit is contained in:
softsimon 2020-09-17 02:45:14 +07:00
parent 4d4eaecb87
commit 14697a01cc
No known key found for this signature in database
GPG Key ID: 488D7DCFB5A430D7

View File

@ -9,6 +9,7 @@ class BisqMarketsApi {
private offersData: OffsersData[] = []; private offersData: OffsersData[] = [];
private tradesData: TradesData[] = []; private tradesData: TradesData[] = [];
private fiatCurrenciesIndexed: { [code: string]: true } = {}; private fiatCurrenciesIndexed: { [code: string]: true } = {};
private allCurrenciesIndexed: { [code: string]: Currency } = {};
private tradeDataByMarket: { [market: string]: TradesData[] } = {}; private tradeDataByMarket: { [market: string]: TradesData[] } = {};
constructor() { } constructor() { }
@ -21,11 +22,16 @@ class BisqMarketsApi {
// Handle data for smarter memory caching // Handle data for smarter memory caching
this.fiatCurrenciesIndexed = {}; this.fiatCurrenciesIndexed = {};
this.allCurrenciesIndexed = {};
this.fiatCurrencyData.forEach((currency) => { this.fiatCurrencyData.forEach((currency) => {
currency._type = 'fiat'; currency._type = 'fiat';
this.fiatCurrenciesIndexed[currency.code] = true; this.fiatCurrenciesIndexed[currency.code] = true;
this.allCurrenciesIndexed[currency.code] = currency;
});
this.cryptoCurrencyData.forEach((currency) => {
currency._type = 'crypto';
this.allCurrenciesIndexed[currency.code] = currency;
}); });
this.cryptoCurrencyData.forEach((currency) => currency._type = 'crypto');
this.tradeDataByMarket = {}; this.tradeDataByMarket = {};
this.tradesData.forEach((trade) => { this.tradesData.forEach((trade) => {
trade._market = trade.currencyPair.toLowerCase().replace('/', '_'); trade._market = trade.currencyPair.toLowerCase().replace('/', '_');
@ -97,14 +103,14 @@ class BisqMarketsApi {
buys = this.offersData buys = this.offersData
.filter((offer) => offer.currencyPair === currencyPair && offer.primaryMarketDirection === 'BUY') .filter((offer) => offer.currencyPair === currencyPair && offer.primaryMarketDirection === 'BUY')
.sort((a, b) => b.price - a.price) .sort((a, b) => b.price - a.price)
.map((offer) => this.offerDataToOffer(offer)); .map((offer) => this.offerDataToOffer(offer, market));
} }
if (!direction || direction === 'sell') { if (!direction || direction === 'sell') {
sells = this.offersData sells = this.offersData
.filter((offer) => offer.currencyPair === currencyPair && offer.primaryMarketDirection === 'SELL') .filter((offer) => offer.currencyPair === currencyPair && offer.primaryMarketDirection === 'SELL')
.sort((a, b) => a.price - b.price) .sort((a, b) => a.price - b.price)
.map((offer) => this.offerDataToOffer(offer)); .map((offer) => this.offerDataToOffer(offer, market));
} }
const result: Offers = {}; const result: Offers = {};
@ -592,15 +598,22 @@ class BisqMarketsApi {
} }
} }
private offerDataToOffer(offer: OffsersData): Offer { private offerDataToOffer(offer: OffsersData, market: string): Offer {
const currencyPairs = market.split('_');
const currencyRight = this.allCurrenciesIndexed[currencyPairs[1].toUpperCase()];
const currencyLeft = this.allCurrenciesIndexed[currencyPairs[0].toUpperCase()];
const price = offer['primaryMarketPrice'] * Math.pow( 10, 8 - currencyRight['precision']);
const amount = offer['primaryMarketAmount'] * Math.pow( 10, 8 - currencyLeft['precision']);
const volume = offer['primaryMarketVolume'] * Math.pow( 10, 8 - currencyRight['precision']);
return { return {
offer_id: offer.id, offer_id: offer.id,
offer_date: offer.date, offer_date: offer.date,
direction: offer.direction, direction: offer.primaryMarketDirection,
min_amount: this.intToBtc(offer.minAmount), min_amount: this.intToBtc(offer.minAmount),
amount: this.intToBtc(offer.amount), amount: this.intToBtc(amount),
price: this.intToBtc(offer.price), price: this.intToBtc(price),
volume: this.intToBtc(offer.primaryMarketVolume), volume: this.intToBtc(volume),
payment_method: offer.paymentMethod, payment_method: offer.paymentMethod,
offer_fee_txid: null, offer_fee_txid: null,
}; };