export function useScreenDimensions()

in src/hooks/layout.ts [19:46]


export function useScreenDimensions() {
  const [screenData, setScreenData] = useState(Dimensions.get('screen'));
  const [orientation, setOrientation] = useState<Orientation>(
    getOrientation(screenData.width, screenData.height),
  );

  const onChange = useCallback(
    (result: {window: ScaledSize; screen: ScaledSize}) => {
      setScreenData(result.window);
      const currentOrientation = getOrientation(
        result.window.width,
        result.window.height,
      );
      if (orientation !== currentOrientation) {
        setOrientation(currentOrientation);
      }
    },
    [setOrientation, setScreenData, orientation],
  );

  useEffect(() => {
    const changeSub = Dimensions.addEventListener('change', onChange);
    return () => {
      changeSub.remove();
    };
  }, [orientation, onChange]);
  return {screen: screenData, orientation};
}