Files
beenvoice/lib/network-status.ts
T

35 lines
857 B
TypeScript

import * as Network from "expo-network";
import { onlineManager } from "@tanstack/react-query";
function isOnline({
isConnected,
isInternetReachable,
}: Pick<Network.NetworkState, "isConnected" | "isInternetReachable">) {
if (isConnected === false) return false;
if (isInternetReachable === false) return false;
return true;
}
let configured = false;
export function configureReactQueryOnlineManager() {
if (configured) return;
configured = true;
void Network.getNetworkStateAsync()
.then((state) => {
onlineManager.setOnline(isOnline(state));
})
.catch(() => {
onlineManager.setOnline(true);
});
onlineManager.setEventListener((setOnline) => {
const subscription = Network.addNetworkStateListener((state) => {
setOnline(isOnline(state));
});
return () => subscription.remove();
});
}