Files
mattermost-mobile/app/hooks/device.ts
Elias Nahum 9d88099ac5 [Gekidou] new UI for no results found (#6165)
* new UI for no results found

* feedback review
2022-04-12 09:24:46 -04:00

66 lines
1.7 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {useEffect, useState} from 'react';
import {AppState, Keyboard, NativeModules, useWindowDimensions} from 'react-native';
import {Device} from '@constants';
const {MattermostManaged} = NativeModules;
const isRunningInSplitView = MattermostManaged.isRunningInSplitView;
export function useSplitView() {
const [isSplitView, setIsSplitView] = useState(false);
const dimensions = useWindowDimensions();
useEffect(() => {
if (Device.IS_TABLET) {
isRunningInSplitView().then((result: {isSplitView: boolean}) => {
setIsSplitView(result.isSplitView);
});
}
}, [dimensions]);
return isSplitView;
}
export function useAppState() {
const [appState, setAppState] = useState(AppState.currentState);
useEffect(() => {
const listener = AppState.addEventListener('change', (nextState) => {
setAppState(nextState);
});
return () => listener.remove();
}, [appState]);
return appState;
}
export function useIsTablet() {
const isSplitView = useSplitView();
return Device.IS_TABLET && !isSplitView;
}
export function useKeyboardHeight() {
const [keyboardHeight, setKeyboardHeight] = useState(0);
useEffect(() => {
const show = Keyboard.addListener('keyboardWillShow', (event) => {
setKeyboardHeight(event.endCoordinates.height);
});
const hide = Keyboard.addListener('keyboardWillHide', () => {
setKeyboardHeight(0);
});
return () => {
show.remove();
hide.remove();
};
}, []);
return keyboardHeight;
}