You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
796 B
28 lines
796 B
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,
|
|
})
|
|
}
|
|
}
|
|
|