import { emptyFunction } from "@/constants/commonConst";
import NetInfo from "@react-native-community/netinfo";
enum NetworkState {
Offline = "Offline",
Wifi = "Wifi",
Cellular = "Cellular",
}
class Network {
private _state: NetworkState = NetworkState.Wifi;
get state() {
return this._state;
}
get isOffline() {
return this._state === NetworkState.Offline;
}
get isWifi() {
return this._state === NetworkState.Wifi;
}
get isCellular() {
return this._state === NetworkState.Cellular;
}
get isConnected() {
return this._state !== NetworkState.Offline;
}
constructor() {
NetInfo.fetch().then(state => {
this.mapState(state);
}).catch(emptyFunction);
NetInfo.addEventListener(state => {
this.mapState(state);
});
}
private mapState(state: any) {
if (state.type === "none") {
this._state = NetworkState.Offline;
} else if (state.type === "wifi") {
this._state = NetworkState.Wifi;
} else {
this._state = NetworkState.Cellular;
}
}
}
const network = new Network();
export default network;