@wordpress/compose
Version:
WordPress higher-order components (HOCs).
58 lines (55 loc) • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useNetworkConnectivity;
var _element = require("@wordpress/element");
var _reactNativeBridge = require("@wordpress/react-native-bridge");
/**
* WordPress dependencies
*/
/**
* @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.
*/
function useNetworkConnectivity() {
const [isConnected, setIsConnected] = (0, _element.useState)(true);
(0, _element.useEffect)(() => {
let isCurrent = true;
(0, _reactNativeBridge.requestConnectionStatus)(isBridgeConnected => {
if (!isCurrent) {
return;
}
setIsConnected(isBridgeConnected);
});
return () => {
isCurrent = false;
};
}, []);
(0, _element.useEffect)(() => {
const subscription = (0, _reactNativeBridge.subscribeConnectionStatus)(({
isConnected: isBridgeConnected
}) => {
setIsConnected(isBridgeConnected);
});
return () => {
subscription.remove();
};
}, []);
return {
isConnected
};
}
//# sourceMappingURL=index.native.js.map