xref: /MusicFree/src/core/network.ts (revision ef714860d2ba5fac469a96d1c94e8bd97275738c)
1*ef714860S猫头猫import NetInfo from '@react-native-community/netinfo';
2*ef714860S猫头猫
3*ef714860S猫头猫let networkState: 'Offline' | 'Wifi' | 'Cellular';
4*ef714860S猫头猫
5*ef714860S猫头猫function getState() {
6*ef714860S猫头猫    return networkState;
7*ef714860S猫头猫}
8*ef714860S猫头猫
9*ef714860S猫头猫const isOffline = () => networkState === 'Offline';
10*ef714860S猫头猫
11*ef714860S猫头猫const isWifi = () => networkState === 'Wifi';
12*ef714860S猫头猫
13*ef714860S猫头猫const isCellular = () => networkState === 'Cellular';
14*ef714860S猫头猫
15*ef714860S猫头猫const mapState = (state: any) => {
16*ef714860S猫头猫    if (state.type === 'none') {
17*ef714860S猫头猫        networkState = 'Offline';
18*ef714860S猫头猫    } else if (state.type === 'wifi') {
19*ef714860S猫头猫        networkState === 'Wifi';
20*ef714860S猫头猫    } else {
21*ef714860S猫头猫        networkState === 'Cellular';
22*ef714860S猫头猫    }
23*ef714860S猫头猫};
24*ef714860S猫头猫
25*ef714860S猫头猫async function setup() {
26*ef714860S猫头猫    const state = await NetInfo.fetch();
27*ef714860S猫头猫    mapState(state);
28*ef714860S猫头猫
29*ef714860S猫头猫    NetInfo.addEventListener(state => {
30*ef714860S猫头猫        mapState(state);
31*ef714860S猫头猫    });
32*ef714860S猫头猫}
33*ef714860S猫头猫
34*ef714860S猫头猫const Network = {
35*ef714860S猫头猫    setup,
36*ef714860S猫头猫    getState,
37*ef714860S猫头猫    isOffline,
38*ef714860S猫头猫    isWifi,
39*ef714860S猫头猫    isCellular,
40*ef714860S猫头猫};
41*ef714860S猫头猫
42*ef714860S猫头猫export default Network;
43