mattermost-mobile/app/context/device/index.tsx
Elias Nahum de57c343f0
MM-55621 fix layout for tablets and foldables (#7697)
* MM-55621 fix layout for tablets and foldables

* feedback review
2023-12-05 11:08:43 +08:00

37 lines
1 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import React, {createContext, useEffect, useState} from 'react';
import {NativeEventEmitter, NativeModules} from 'react-native';
type Props = {
children: React.ReactNode;
}
const {SplitView} = NativeModules;
const {isRunningInSplitView} = SplitView;
const emitter = new NativeEventEmitter(SplitView);
export let info: SplitViewResult = isRunningInSplitView();
export const DeviceContext = createContext(info);
const {Provider} = DeviceContext;
const DeviceInfoProvider = ({children}: Props) => {
const [deviceInfo, setDeviceInfo] = useState(info);
useEffect(() => {
const listener = emitter.addListener('SplitViewChanged', (result: SplitViewResult) => {
setDeviceInfo(result);
info = result;
});
return () => listener.remove();
}, []);
return (
<Provider value={deviceInfo}>
{children}
</Provider>);
};
export default DeviceInfoProvider;