import { MMKVStorage } from "../storages"; export const styleKeys = { style: (url: string) => ['style', url], } const getStyle = async (styleURL: string) => { if (!styleURL) { return null; } const cachedData = JSON.parse(MMKVStorage.getItem(styleKeys.style(styleURL).toString()) ?? 'null'); if (cachedData) return cachedData; const response = await fetch(styleURL); const data = await response.json(); MMKVStorage.setItem(styleKeys.style(styleURL).toString(), JSON.stringify(data)); return data; } type FilterOptions = { hiddenPOIs: number[] } export const applyFiltersToLayer = (layers: any[], options: FilterOptions) => { return layers.map((layer) => { switch (layer.id) { case 'indoor-wemap-markers-poi': if (options.hiddenPOIs) { const pinpointFilter = layer.filter.find((f: any) => f[0] === '!' && f[1][0] === 'in' && f[1][1][0] === 'get' && f[1][1][1] === 'pinpoint'); if (pinpointFilter) { layer.filter[layer.filter.indexOf(pinpointFilter)][1][2][1] = options.hiddenPOIs; } else { layer.filter.push(['!', ['in', ['get', 'pinpoint'], ['literal', options.hiddenPOIs]]]); } } break; default: break; } return layer; }); } export { getStyle };