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};
}