modified api URL so that it will always pass the correct path when calling fetch for trades
This commit is contained in:
parent
907a8f062f
commit
0652d85f56
32
src/App.tsx
32
src/App.tsx
@ -60,6 +60,9 @@ export default function App() {
|
|||||||
const [cacheLoaded, setCacheLoaded] = useState<boolean>(false);
|
const [cacheLoaded, setCacheLoaded] = useState<boolean>(false);
|
||||||
const [needsUpdate, setNeedsUpdate] = useState<ChainMap<boolean>>({});
|
const [needsUpdate, setNeedsUpdate] = useState<ChainMap<boolean>>({});
|
||||||
const [isFetching, setIsFetching] = useState<ChainMap<boolean>>({});
|
const [isFetching, setIsFetching] = useState<ChainMap<boolean>>({});
|
||||||
|
const [fetchProgress, setFetchProgress] = useState<Record<string, number>>(
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
|
||||||
// --- Helpers ---
|
// --- Helpers ---
|
||||||
const getLatest = (trades: Trade[]) =>
|
const getLatest = (trades: Trade[]) =>
|
||||||
@ -141,6 +144,7 @@ export default function App() {
|
|||||||
reverse: true,
|
reverse: true,
|
||||||
});
|
});
|
||||||
all = all.concat(batch);
|
all = all.concat(batch);
|
||||||
|
setFetchProgress((m) => ({ ...m, [chain]: all.length }));
|
||||||
setAllChainTrades((m) => ({ ...m, [chain]: all }));
|
setAllChainTrades((m) => ({ ...m, [chain]: all }));
|
||||||
if (batch.length < BATCH) break;
|
if (batch.length < BATCH) break;
|
||||||
offset += BATCH;
|
offset += BATCH;
|
||||||
@ -170,6 +174,7 @@ export default function App() {
|
|||||||
reverse: true,
|
reverse: true,
|
||||||
});
|
});
|
||||||
newTrades = newTrades.concat(batch);
|
newTrades = newTrades.concat(batch);
|
||||||
|
setFetchProgress((m) => ({ ...m, [chain]: newTrades.length }));
|
||||||
if (batch.length < BATCH) break;
|
if (batch.length < BATCH) break;
|
||||||
offset += BATCH;
|
offset += BATCH;
|
||||||
}
|
}
|
||||||
@ -201,17 +206,40 @@ export default function App() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cacheLoaded)
|
if (!cacheLoaded) {
|
||||||
|
const prog = fetchProgress[selectedChain] || 0;
|
||||||
return (
|
return (
|
||||||
<Box
|
<Box
|
||||||
display="flex"
|
display="flex"
|
||||||
|
flexDirection="column"
|
||||||
alignItems="center"
|
alignItems="center"
|
||||||
justifyContent="center"
|
justifyContent="center"
|
||||||
height="100vh"
|
height="100vh"
|
||||||
>
|
>
|
||||||
<CircularProgress />
|
<Typography variant="h6">Loading trades…</Typography>
|
||||||
|
<Typography variant="body2">
|
||||||
|
Fetched: {prog.toLocaleString()} trades
|
||||||
|
</Typography>
|
||||||
|
<CircularProgress sx={{ my: 2 }} />
|
||||||
|
{prog > 0 && (
|
||||||
|
<Box width="90%" height={300}>
|
||||||
|
<QortMultiChart
|
||||||
|
candles={aggregateCandles(
|
||||||
|
allChainTrades[selectedChain] || [],
|
||||||
|
interval
|
||||||
|
)}
|
||||||
|
showSMA
|
||||||
|
themeMode={theme.palette.mode as 'light' | 'dark'}
|
||||||
|
background={theme.palette.background.paper}
|
||||||
|
textColor={theme.palette.text.primary}
|
||||||
|
pairLabel={selectedChain}
|
||||||
|
interval={interval}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const tradesCount = (allChainTrades[selectedChain] || []).length;
|
const tradesCount = (allChainTrades[selectedChain] || []).length;
|
||||||
const latestTS = getLatest(allChainTrades[selectedChain] || []);
|
const latestTS = getLatest(allChainTrades[selectedChain] || []);
|
||||||
|
@ -37,8 +37,15 @@ export async function fetchTrades({
|
|||||||
if (minimumTimestamp === 0) {
|
if (minimumTimestamp === 0) {
|
||||||
params.delete('minimumTimestamp');
|
params.delete('minimumTimestamp');
|
||||||
}
|
}
|
||||||
|
function getApiRoot() {
|
||||||
|
const { origin, pathname } = window.location;
|
||||||
|
// if path contains “/render”, cut from there
|
||||||
|
const i = pathname.indexOf('/render/');
|
||||||
|
return i === -1 ? origin : origin + pathname.slice(0, i);
|
||||||
|
}
|
||||||
|
const API_ROOT = getApiRoot();
|
||||||
|
|
||||||
const url = `crosschain/trades?${params.toString()}`;
|
const url = `${API_ROOT}/crosschain/trades?${params.toString()}`;
|
||||||
const resp = await fetch(url);
|
const resp = await fetch(url);
|
||||||
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
|
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
|
||||||
return await resp.json();
|
return await resp.json();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user