Files
AtreidesAssetsFree/client/price/intraday.js
T

30 lines
1.2 KiB
JavaScript
Raw Normal View History

2026-10-29 11:57:29 +01:00
// Generated, do not edit. sha256:7227a0859017790e220d3094fb16cfe6c1e290c2297569d78de93f970684ea0d
import { intradaySeries } from '../data/market.js';
import { currentRate } from './providers.js';
import { t } from '../i18n/index.js';
const FRESH_MS = 60_000;
const memo = new Map();
const NONE = Object.freeze({ points: null });
async function toBase(r) {
if (r.status !== 'ok') return NONE;
const rate = await currentRate(r.currency);
if (rate == null) return NONE;
const named = src => t('marketService.sourceLive', { source: src });
const src = r.sourceLabel || r.source;
const source = src ? named(src) : t('connections.kindMarket');
const sources = new Map();
for (const [ms, , own] of r.points) if (own) sources.set(ms, named(own));
return { points: r.points.map(([ms, p]) => [ms, p * rate]), source, sources };
}
export async function loadIntraday(assetId, sinceMs) {
const hit = memo.get(assetId);
if (hit && hit.since === sinceMs && Date.now() - hit.at < FRESH_MS) return hit.result;
let result;
try { result = await toBase(await intradaySeries(assetId, sinceMs)); }
catch { result = NONE; }
memo.set(assetId, { at: Date.now(), since: sinceMs, result });
return result;
}