27 lines
636 B
JavaScript
27 lines
636 B
JavaScript
import { cachedFetcher } from '@/lib/fetch'
|
|
|
|
const getChainFeeRate = cachedFetcher(async function fetchChainFeeRate () {
|
|
const url = 'https://mempool.space/api/v1/fees/recommended'
|
|
try {
|
|
const res = await fetch(url)
|
|
const body = await res.json()
|
|
return body.hourFee
|
|
} catch (err) {
|
|
console.error('fetchChainFee', err)
|
|
return 0
|
|
}
|
|
}, {
|
|
maxSize: 1,
|
|
cacheExpiry: 60 * 1000, // 1 minute
|
|
forceRefreshThreshold: 0, // never force refresh
|
|
keyGenerator: () => 'getChainFeeRate'
|
|
})
|
|
|
|
export default {
|
|
Query: {
|
|
chainFee: async (parent, opts, ctx) => {
|
|
return await getChainFeeRate() || 0
|
|
}
|
|
}
|
|
}
|