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