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 3 months 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 - Improved the usability of the toggle component
- Switched to the accounts endpoint in the holding detail dialog - 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 ## 2.107.1 - 2024-09-12

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

Loading…
Cancel
Save