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