28 lines
735 B
JavaScript
28 lines
735 B
JavaScript
// modules/data/bitcoin.js — Blockstream block height polling
|
|
// Writes to S: lastKnownBlockHeight, _starPulseIntensity
|
|
import { S } from '../state.js';
|
|
|
|
const BITCOIN_REFRESH_MS = 60 * 1000;
|
|
|
|
export async function fetchBlockHeight() {
|
|
try {
|
|
const res = await fetch('https://blockstream.info/api/blocks/tip/height');
|
|
if (!res.ok) return null;
|
|
const height = parseInt(await res.text(), 10);
|
|
if (isNaN(height)) return null;
|
|
|
|
const isNew = S.lastKnownBlockHeight !== null && height > S.lastKnownBlockHeight;
|
|
S.lastKnownBlockHeight = height;
|
|
|
|
if (isNew) {
|
|
S._starPulseIntensity = 1.0;
|
|
}
|
|
|
|
return { height, isNewBlock: isNew };
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
export { BITCOIN_REFRESH_MS };
|