27 lines
		
	
	
	
		
			621 B
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
	
		
			621 B
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
// Copyright 2022 Signal Messenger, LLC
 | 
						|
// SPDX-License-Identifier: AGPL-3.0-only
 | 
						|
 | 
						|
import { useEffect, useState } from 'react';
 | 
						|
 | 
						|
export function useDevicePixelRatio(): number {
 | 
						|
  const [result, setResult] = useState(window.devicePixelRatio);
 | 
						|
 | 
						|
  useEffect(() => {
 | 
						|
    const update = () => {
 | 
						|
      setResult(window.devicePixelRatio);
 | 
						|
    };
 | 
						|
 | 
						|
    update();
 | 
						|
 | 
						|
    const mediaQuery = window.matchMedia(
 | 
						|
      `screen and (resolution: ${result}dppx)`
 | 
						|
    );
 | 
						|
    mediaQuery.addEventListener('change', update);
 | 
						|
 | 
						|
    return () => {
 | 
						|
      mediaQuery.removeEventListener('change', update);
 | 
						|
    };
 | 
						|
  }, [result]);
 | 
						|
 | 
						|
  return result;
 | 
						|
}
 |