mirror of
https://github.com/heyman/heynote.git
synced 2024-12-22 23:00:38 +01:00
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import CONFIG from "../config"
|
|
|
|
const STALE_TIME = 1000 * 3600 * 12
|
|
|
|
export default async function getCurrencyData() {
|
|
const currency = CONFIG.get("currency")
|
|
if (currency?.timeFetched && (new Date()).getTime() - currency.timeFetched < STALE_TIME) {
|
|
// we already have currency data and it's not stale
|
|
return currency.data
|
|
} else {
|
|
// we either don't have currency data, or it's stale
|
|
let response
|
|
try {
|
|
response = await fetch("https://currencies.heynote.com/rates.json", {cache: "no-cache"})
|
|
} catch(err) {
|
|
// if we got an error, but have stale currency data, we'll use that
|
|
if (currency?.data) {
|
|
return currency.data
|
|
}
|
|
}
|
|
|
|
if (response.ok) {
|
|
const data = JSON.parse(await response.text())
|
|
CONFIG.set("currency", {
|
|
data,
|
|
timeFetched: (new Date()).getTime(),
|
|
})
|
|
return data
|
|
} else {
|
|
// if we got an error, but have stale currency data, we'll use that
|
|
console.log("Error retrieving currency data:", response)
|
|
if (currency?.data) {
|
|
return currency.data
|
|
}
|
|
}
|
|
}
|
|
}
|