packages/widget/src/utils/getSynapsePauseData.ts
import { PAUSED_CHAINS_URL, PAUSED_MODULES_URL } from '@/constants/index'
import { fetchJSONData } from '@/utils/fetchJsonData'
enum SessionStorageKey {
CHAIN_PAUSE = 'synapse-paused-chains',
MODULE_PAUSE = 'synapse-paused-modules',
}
let isFetching = false
export const getSynapsePauseData = () => {
const fetchAndStoreData = async () => {
if (isFetching) {
return
}
try {
isFetching = true
const chainsData = await fetchJSONData(PAUSED_CHAINS_URL)
const modulesData = await fetchJSONData(PAUSED_MODULES_URL)
sessionStorage.setItem(
SessionStorageKey.CHAIN_PAUSE,
JSON.stringify(chainsData)
)
sessionStorage.setItem(
SessionStorageKey.MODULE_PAUSE,
JSON.stringify(modulesData)
)
} catch (error) {
console.error(
'[Synapse Widget] Failed to fetch paused chains/modules: ',
error
)
} finally {
setTimeout(() => {
isFetching = false
}, 1000)
}
}
const readData = () => {
if (sessionStorage) {
const pausedChainsData = JSON.parse(
sessionStorage.getItem(SessionStorageKey.CHAIN_PAUSE)
)
const pausedModulesData = JSON.parse(
sessionStorage.getItem(SessionStorageKey.MODULE_PAUSE)
)
return { pausedChainsData, pausedModulesData }
}
return { pausedChainsData: null, pausedModulesData: null }
}
fetchAndStoreData()
return readData()
}