git-subtree-dir: apps/mobile git-subtree-mainline:86f8987dffgit-subtree-split:5fa30f365f
35 lines
857 B
TypeScript
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();
|
|
});
|
|
}
|