@applicaster/quick-brick-core
Version:
Core package for Applicaster's Quick Brick App
44 lines (36 loc) • 1.12 kB
text/typescript
import { logger } from "@applicaster/zapp-react-native-utils/logger";
import { platformSelect } from "@applicaster/zapp-react-native-utils/reactUtils";
import NetInfo from "@react-native-community/netinfo";
import { isConnectionInfoReady } from "./utils";
function platformShouldSkipOfflineSetup(env: string) {
return (
env === "test" ||
platformSelect({
ios: false,
android: false,
default: true,
})
);
}
export function networkStatusReady(env = process.env.NODE_ENV) {
return new Promise<void>((resolve) => {
if (platformShouldSkipOfflineSetup(env)) {
logger.info("skip waiting for network ready");
resolve();
return;
}
// eslint-disable-next-line prefer-const
let unsubscribe;
const listener = (netInfoState) => {
if (isConnectionInfoReady(netInfoState)) {
logger.info({
message: "net info ready",
data: { timestamp: new Date(Date.now()).toISOString() },
});
resolve(netInfoState);
unsubscribe?.();
}
};
unsubscribe = NetInfo.addEventListener(listener);
});
}