aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/helpers/utils/fetch-with-cache.js
blob: ac641c3c4d09f9629bc48f4fa07a69bc95f5febc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import {
  loadLocalStorageData,
  saveLocalStorageData,
} from '../../../lib/local-storage-helpers'
import http from './fetch'

const fetch = http({
  timeout: 30000,
})

export default function fetchWithCache (url, opts, cacheRefreshTime = 360000) {
  const currentTime = Date.now()
  const cachedFetch = loadLocalStorageData('cachedFetch') || {}
  const { cachedUrl, cachedTime } = cachedFetch[url] || {}
  if (cachedUrl && currentTime - cachedTime < cacheRefreshTime) {
    return cachedFetch[url]
  } else {
    cachedFetch[url] = { cachedUrl: url, cachedTime: currentTime }
    saveLocalStorageData(cachedFetch, 'cachedFetch')
    return fetch(url, {
      referrerPolicy: 'no-referrer-when-downgrade',
      body: null,
      method: 'GET',
      mode: 'cors',
      ...opts,
    })
  }
}