pdf-caching-flags.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. import getMeta from '../../../utils/meta'
  2. import { debugConsole } from '@/utils/debugging'
  3. const hasTextEncoder = typeof TextEncoder !== 'undefined'
  4. if (!hasTextEncoder) {
  5. debugConsole.warn('TextEncoder is not available. Disabling pdf-caching.')
  6. }
  7. const isOpera =
  8. // userAgentData is experimental and not currently in the Navigator type
  9. Array.isArray((navigator as any).userAgentData?.brands) &&
  10. (navigator as any).userAgentData.brands.some(
  11. (b: { brand: string }) => b.brand === 'Opera'
  12. )
  13. if (isOpera) {
  14. debugConsole.warn('Browser cache is limited in Opera. Disabling pdf-caching.')
  15. }
  16. function isFlagEnabled(flag: string): boolean {
  17. if (!hasTextEncoder) return false
  18. if (isOpera) return false
  19. return getMeta('ol-splitTestVariants')?.[flag] === 'enabled'
  20. }
  21. export const cachedUrlLookupEnabled = isFlagEnabled(
  22. 'pdf-caching-cached-url-lookup'
  23. )
  24. export const prefetchingEnabled = isFlagEnabled('pdf-caching-prefetching')
  25. export const prefetchLargeEnabled = isFlagEnabled('pdf-caching-prefetch-large')
  26. export const enablePdfCaching = isFlagEnabled('pdf-caching-mode')
  27. export const trackPdfDownloadEnabled = isFlagEnabled('track-pdf-download')
  28. export const canUseClsiCache = getMeta('ol-canUseClsiCache')