expo-network 7.0.2 → 7.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,12 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 7.0.3 — 2024-12-02
14
+
15
+ ### 🐛 Bug fixes
16
+
17
+ - Fix event emitters not working on web. ([#33327](https://github.com/expo/expo/pull/33327) by [@aleqsio](https://github.com/aleqsio))
18
+
13
19
  ## 7.0.2 — 2024-11-22
14
20
 
15
21
  _This version does not introduce any user-facing changes._
@@ -1,7 +1,7 @@
1
1
  apply plugin: 'com.android.library'
2
2
 
3
3
  group = 'host.exp.exponent'
4
- version = '7.0.2'
4
+ version = '7.0.3'
5
5
 
6
6
  def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
7
7
  apply from: expoModulesCorePlugin
@@ -14,6 +14,6 @@ android {
14
14
  namespace "expo.modules.network"
15
15
  defaultConfig {
16
16
  versionCode 11
17
- versionName '7.0.2'
17
+ versionName '7.0.3'
18
18
  }
19
19
  }
@@ -1,9 +1,14 @@
1
- import { NetworkState } from './Network.types';
2
- declare const _default: {
1
+ import { NativeModule } from 'expo-modules-core';
2
+ import { NetworkEvents, NetworkState } from './Network.types';
3
+ declare class ExpoNetworkModule extends NativeModule<NetworkEvents> {
4
+ eventListener?: () => void;
5
+ updateNetworkState(): void;
3
6
  getIpAddressAsync(): Promise<string>;
4
7
  getNetworkStateAsync(): Promise<NetworkState>;
8
+ isAirplaneModeEnabledAsync(): Promise<boolean>;
5
9
  startObserving(): void;
6
10
  stopObserving(): void;
7
- };
11
+ }
12
+ declare const _default: typeof ExpoNetworkModule;
8
13
  export default _default;
9
14
  //# sourceMappingURL=ExpoNetwork.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoNetwork.web.d.ts","sourceRoot":"","sources":["../src/ExpoNetwork.web.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,YAAY,EAAoB,MAAM,iBAAiB,CAAC;;yBAoBxD,QAAQ,MAAM,CAAC;4BASZ,QAAQ,YAAY,CAAC;;;;AAVrD,wBAqBE"}
1
+ {"version":3,"file":"ExpoNetwork.web.d.ts","sourceRoot":"","sources":["../src/ExpoNetwork.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAoB,MAAM,iBAAiB,CAAC;AAahF,cAAM,iBAAkB,SAAQ,YAAY,CAAC,aAAa,CAAC;IACzD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,kBAAkB;IAKZ,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IASpC,oBAAoB,IAAI,OAAO,CAAC,YAAY,CAAC;IAG7C,0BAA0B,IAAI,OAAO,CAAC,OAAO,CAAC;IAGpD,cAAc;IAKd,aAAa;CAMd;;AAED,wBAAoD"}
@@ -1,6 +1,5 @@
1
- import { EventEmitter } from 'expo-modules-core';
1
+ import { NativeModule, registerWebModule } from 'expo-modules-core';
2
2
  import { NetworkStateType } from './Network.types';
3
- const emitter = new EventEmitter();
4
3
  const onNetworkStateEventName = 'onNetworkStateChanged';
5
4
  function getNetworkState() {
6
5
  const isOnline = typeof navigator !== 'undefined' && navigator.onLine;
@@ -10,11 +9,12 @@ function getNetworkState() {
10
9
  isInternetReachable: isOnline,
11
10
  };
12
11
  }
13
- function updateNetworkState() {
14
- const state = getNetworkState();
15
- emitter.emit(onNetworkStateEventName, state);
16
- }
17
- export default {
12
+ class ExpoNetworkModule extends NativeModule {
13
+ eventListener;
14
+ updateNetworkState() {
15
+ const state = getNetworkState();
16
+ this.emit(onNetworkStateEventName, state);
17
+ }
18
18
  async getIpAddressAsync() {
19
19
  try {
20
20
  const resp = await fetch('https://api.ipify.org?format=json');
@@ -24,17 +24,24 @@ export default {
24
24
  catch (e) {
25
25
  throw e;
26
26
  }
27
- },
27
+ }
28
28
  async getNetworkStateAsync() {
29
29
  return getNetworkState();
30
- },
30
+ }
31
+ async isAirplaneModeEnabledAsync() {
32
+ return false;
33
+ }
31
34
  startObserving() {
32
- window.addEventListener('online', updateNetworkState);
33
- window.addEventListener('offline', updateNetworkState);
34
- },
35
+ this.eventListener = () => this.updateNetworkState();
36
+ window.addEventListener('online', this.eventListener);
37
+ window.addEventListener('offline', this.eventListener);
38
+ }
35
39
  stopObserving() {
36
- window.removeEventListener('online', updateNetworkState);
37
- window.removeEventListener('offline', updateNetworkState);
38
- },
39
- };
40
+ if (this.eventListener) {
41
+ window.removeEventListener('online', this.eventListener);
42
+ window.removeEventListener('offline', this.eventListener);
43
+ }
44
+ }
45
+ }
46
+ export default registerWebModule(ExpoNetworkModule);
40
47
  //# sourceMappingURL=ExpoNetwork.web.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoNetwork.web.js","sourceRoot":"","sources":["../src/ExpoNetwork.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAoC,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAErF,MAAM,OAAO,GAAG,IAAI,YAAY,EAAiB,CAAC;AAClD,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAExD,SAAS,eAAe;IACtB,MAAM,QAAQ,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,MAAM,CAAC;IACtE,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI;QACjE,WAAW,EAAE,QAAQ;QACrB,mBAAmB,EAAE,QAAQ;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,eAAe;IACb,KAAK,CAAC,iBAAiB;QACrB,IAAI;YACF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,EAAE,CAAC;SAChB;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAC;SACT;IACH,CAAC;IACD,KAAK,CAAC,oBAAoB;QACxB,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;IACD,cAAc;QACZ,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACtD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACzD,CAAC;IACD,aAAa;QACX,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACzD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAC5D,CAAC;CACF,CAAC","sourcesContent":["import { EventEmitter } from 'expo-modules-core';\n\nimport { type NetworkEvents, NetworkState, NetworkStateType } from './Network.types';\n\nconst emitter = new EventEmitter<NetworkEvents>();\nconst onNetworkStateEventName = 'onNetworkStateChanged';\n\nfunction getNetworkState(): NetworkState {\n const isOnline = typeof navigator !== 'undefined' && navigator.onLine;\n return {\n type: isOnline ? NetworkStateType.UNKNOWN : NetworkStateType.NONE,\n isConnected: isOnline,\n isInternetReachable: isOnline,\n };\n}\n\nfunction updateNetworkState() {\n const state = getNetworkState();\n emitter.emit(onNetworkStateEventName, state);\n}\n\nexport default {\n async getIpAddressAsync(): Promise<string> {\n try {\n const resp = await fetch('https://api.ipify.org?format=json');\n const data = await resp.json();\n return data.ip;\n } catch (e) {\n throw e;\n }\n },\n async getNetworkStateAsync(): Promise<NetworkState> {\n return getNetworkState();\n },\n startObserving() {\n window.addEventListener('online', updateNetworkState);\n window.addEventListener('offline', updateNetworkState);\n },\n stopObserving() {\n window.removeEventListener('online', updateNetworkState);\n window.removeEventListener('offline', updateNetworkState);\n },\n};\n"]}
1
+ {"version":3,"file":"ExpoNetwork.web.js","sourceRoot":"","sources":["../src/ExpoNetwork.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAA+B,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEhF,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAExD,SAAS,eAAe;IACtB,MAAM,QAAQ,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,MAAM,CAAC;IACtE,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI;QACjE,WAAW,EAAE,QAAQ;QACrB,mBAAmB,EAAE,QAAQ;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,iBAAkB,SAAQ,YAA2B;IACzD,aAAa,CAAc;IAC3B,kBAAkB;QAChB,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,IAAI;YACF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,EAAE,CAAC;SAChB;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAC;SACT;IACH,CAAC;IACD,KAAK,CAAC,oBAAoB;QACxB,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,0BAA0B;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,cAAc;QACZ,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACrD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACtD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACzD,CAAC;IACD,aAAa;QACX,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACzD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SAC3D;IACH,CAAC;CACF;AAED,eAAe,iBAAiB,CAAC,iBAAiB,CAAC,CAAC","sourcesContent":["import { NativeModule, registerWebModule } from 'expo-modules-core';\n\nimport { NetworkEvents, NetworkState, NetworkStateType } from './Network.types';\n\nconst onNetworkStateEventName = 'onNetworkStateChanged';\n\nfunction getNetworkState(): NetworkState {\n const isOnline = typeof navigator !== 'undefined' && navigator.onLine;\n return {\n type: isOnline ? NetworkStateType.UNKNOWN : NetworkStateType.NONE,\n isConnected: isOnline,\n isInternetReachable: isOnline,\n };\n}\n\nclass ExpoNetworkModule extends NativeModule<NetworkEvents> {\n eventListener?: () => void;\n updateNetworkState() {\n const state = getNetworkState();\n this.emit(onNetworkStateEventName, state);\n }\n\n async getIpAddressAsync(): Promise<string> {\n try {\n const resp = await fetch('https://api.ipify.org?format=json');\n const data = await resp.json();\n return data.ip;\n } catch (e) {\n throw e;\n }\n }\n async getNetworkStateAsync(): Promise<NetworkState> {\n return getNetworkState();\n }\n async isAirplaneModeEnabledAsync(): Promise<boolean> {\n return false;\n }\n startObserving() {\n this.eventListener = () => this.updateNetworkState();\n window.addEventListener('online', this.eventListener);\n window.addEventListener('offline', this.eventListener);\n }\n stopObserving() {\n if (this.eventListener) {\n window.removeEventListener('online', this.eventListener);\n window.removeEventListener('offline', this.eventListener);\n }\n }\n}\n\nexport default registerWebModule(ExpoNetworkModule);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-network",
3
- "version": "7.0.2",
3
+ "version": "7.0.3",
4
4
  "description": "Provides useful information about the device's network such as its IP address, MAC address, and airplane mode status",
5
5
  "main": "build/Network.js",
6
6
  "types": "build/Network.d.ts",
@@ -37,5 +37,5 @@
37
37
  "expo": "*",
38
38
  "react": "*"
39
39
  },
40
- "gitHead": "eb0d9b5b6ba8dd5b64e016e41166e42ced543a69"
40
+ "gitHead": "bc1fea6bcab47889e2922d543920397691b200f3"
41
41
  }
@@ -1,8 +1,7 @@
1
- import { EventEmitter } from 'expo-modules-core';
1
+ import { NativeModule, registerWebModule } from 'expo-modules-core';
2
2
 
3
- import { type NetworkEvents, NetworkState, NetworkStateType } from './Network.types';
3
+ import { NetworkEvents, NetworkState, NetworkStateType } from './Network.types';
4
4
 
5
- const emitter = new EventEmitter<NetworkEvents>();
6
5
  const onNetworkStateEventName = 'onNetworkStateChanged';
7
6
 
8
7
  function getNetworkState(): NetworkState {
@@ -14,12 +13,13 @@ function getNetworkState(): NetworkState {
14
13
  };
15
14
  }
16
15
 
17
- function updateNetworkState() {
18
- const state = getNetworkState();
19
- emitter.emit(onNetworkStateEventName, state);
20
- }
16
+ class ExpoNetworkModule extends NativeModule<NetworkEvents> {
17
+ eventListener?: () => void;
18
+ updateNetworkState() {
19
+ const state = getNetworkState();
20
+ this.emit(onNetworkStateEventName, state);
21
+ }
21
22
 
22
- export default {
23
23
  async getIpAddressAsync(): Promise<string> {
24
24
  try {
25
25
  const resp = await fetch('https://api.ipify.org?format=json');
@@ -28,16 +28,24 @@ export default {
28
28
  } catch (e) {
29
29
  throw e;
30
30
  }
31
- },
31
+ }
32
32
  async getNetworkStateAsync(): Promise<NetworkState> {
33
33
  return getNetworkState();
34
- },
34
+ }
35
+ async isAirplaneModeEnabledAsync(): Promise<boolean> {
36
+ return false;
37
+ }
35
38
  startObserving() {
36
- window.addEventListener('online', updateNetworkState);
37
- window.addEventListener('offline', updateNetworkState);
38
- },
39
+ this.eventListener = () => this.updateNetworkState();
40
+ window.addEventListener('online', this.eventListener);
41
+ window.addEventListener('offline', this.eventListener);
42
+ }
39
43
  stopObserving() {
40
- window.removeEventListener('online', updateNetworkState);
41
- window.removeEventListener('offline', updateNetworkState);
42
- },
43
- };
44
+ if (this.eventListener) {
45
+ window.removeEventListener('online', this.eventListener);
46
+ window.removeEventListener('offline', this.eventListener);
47
+ }
48
+ }
49
+ }
50
+
51
+ export default registerWebModule(ExpoNetworkModule);