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
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |