@wordpress/compose
Version:
WordPress higher-order components (HOCs).
52 lines (50 loc) • 1.24 kB
JavaScript
/**
* WordPress dependencies
*/
import { useEffect, useState } from '@wordpress/element';
import { requestConnectionStatus, subscribeConnectionStatus } from '@wordpress/react-native-bridge';
/**
* @typedef {Object} NetworkInformation
*
* @property {boolean} [isConnected] Whether the device is connected to a network.
*/
/**
* Returns the current network connectivity status provided by the native bridge.
*
* @example
*
* ```jsx
* const { isConnected } = useNetworkConnectivity();
* ```
*
* @return {NetworkInformation} Network information.
*/
export default function useNetworkConnectivity() {
const [isConnected, setIsConnected] = useState(true);
useEffect(() => {
let isCurrent = true;
requestConnectionStatus(isBridgeConnected => {
if (!isCurrent) {
return;
}
setIsConnected(isBridgeConnected);
});
return () => {
isCurrent = false;
};
}, []);
useEffect(() => {
const subscription = subscribeConnectionStatus(({
isConnected: isBridgeConnected
}) => {
setIsConnected(isBridgeConnected);
});
return () => {
subscription.remove();
};
}, []);
return {
isConnected
};
}
//# sourceMappingURL=index.native.js.map