All files / src/hooks useDevicePerformance.ts

0% Statements 0/9
0% Branches 0/7
0% Functions 0/4
0% Lines 0/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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                                                   
import { useMemo } from 'react';
 
import useDeviceInfo from '../utils/useDeviceInfo';
 
interface DevicePerformance {
  isHighPerformance: boolean;
  cpuCores: number;
  deviceMemory?: number;
  isMobile: boolean;
}
 
export const useDevicePerformance = (): DevicePerformance => {
  const { isMobile } = useDeviceInfo();
 
  const cpuCores = useMemo(() => navigator.hardwareConcurrency || 4, []);
 
  const deviceMemory = useMemo(() => (navigator as Navigator & { deviceMemory?: number }).deviceMemory, []);
 
  const isHighPerformance = useMemo(
    () => (!isMobile && cpuCores >= 4) || (deviceMemory !== undefined && deviceMemory >= 8) || cpuCores >= 6,
    [cpuCores, deviceMemory, isMobile]
  );
 
  return { isHighPerformance, cpuCores, deviceMemory, isMobile };
};