Feature/add fallback in get quotes of eod historical data service (#3776)

* Add fallback to previousClose in getQuotes()

* Update changelog
pull/3777/head
Thomas Kaul 1 week ago committed by GitHub
parent 520c176cd6
commit 4865aa1665
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Improved the usability of the toggle component
- Switched to the accounts endpoint in the holding detail dialog
- Added a fallback in the get quotes functionality of the _EOD Historical Data_ service
## 2.107.1 - 2024-09-12

@ -18,6 +18,7 @@ import {
} from '@ghostfolio/common/config';
import { DATE_FORMAT, isCurrency } from '@ghostfolio/common/helper';
import { DataProviderInfo } from '@ghostfolio/common/interfaces';
import { MarketState } from '@ghostfolio/common/types';
import { Injectable, Logger } from '@nestjs/common';
import {
@ -229,7 +230,12 @@ export class EodHistoricalDataService implements DataProviderInterface {
}
).json<any>();
const quotes =
const quotes: {
close: number;
code: string;
previousClose: number;
timestamp: number;
}[] =
eodHistoricalDataSymbols.length === 1
? [realTimeResponse]
: realTimeResponse;
@ -243,7 +249,7 @@ export class EodHistoricalDataService implements DataProviderInterface {
})
);
for (const { close, code, timestamp } of quotes) {
for (const { close, code, previousClose, timestamp } of quotes) {
let currency: string;
if (this.isForex(code)) {
@ -267,15 +273,21 @@ export class EodHistoricalDataService implements DataProviderInterface {
}
}
if (isNumber(close)) {
if (isNumber(close) || isNumber(previousClose)) {
const marketPrice: number = isNumber(close) ? close : previousClose;
let marketState: MarketState = 'closed';
if (this.isForex(code) || isToday(new Date(timestamp * 1000))) {
marketState = 'open';
} else if (!isNumber(close)) {
marketState = 'delayed';
}
response[this.convertFromEodSymbol(code)] = {
currency,
dataSource: this.getName(),
marketPrice: close,
marketState:
this.isForex(code) || isToday(new Date(timestamp * 1000))
? 'open'
: 'closed'
marketPrice,
marketState,
dataSource: this.getName()
};
} else {
Logger.error(

Loading…
Cancel
Save