From d73dada399aafdb1c6086862167bcd6165f6f562 Mon Sep 17 00:00:00 2001 From: Julio Alves Date: Wed, 21 Oct 2020 10:15:42 -0300 Subject: [PATCH] Support latest version of NetInfo module Added some fixes to support latest version of @react-native-community/netinfo Updates: - Fix undefined property from NetInfo.isConnect; - update handleConnectivityChange callback; - added unsubscribable to remove listener at componentWillUnmount; --- CachedImage.js | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/CachedImage.js b/CachedImage.js index daf03c8..7b09e8b 100644 --- a/CachedImage.js +++ b/CachedImage.js @@ -12,11 +12,12 @@ const flattenStyle = ReactNative.StyleSheet.flatten; const ImageCacheManager = require('./ImageCacheManager'); +const NetInfo = require('@react-native-community/netinfo'); + const { View, ImageBackground, ActivityIndicator, - NetInfo, Platform, StyleSheet, } = ReactNative; @@ -63,6 +64,7 @@ class CachedImage extends React.Component { constructor(props) { super(props); this._isMounted = false; + this.unsubscribable = null; this.state = { isCacheable: true, cachedImagePath: null, @@ -79,12 +81,12 @@ class CachedImage extends React.Component { componentWillMount() { this._isMounted = true; - NetInfo.isConnected.addEventListener('connectionChange', this.handleConnectivityChange); + this.unsubscribable = NetInfo.addEventListener(this.handleConnectivityChange); // initial - NetInfo.isConnected.fetch() - .then(isConnected => { + NetInfo.fetch() + .then(state => { this.safeSetState({ - networkAvailable: isConnected + networkAvailable: state.isConnected }); }); @@ -93,7 +95,12 @@ class CachedImage extends React.Component { componentWillUnmount() { this._isMounted = false; - NetInfo.isConnected.removeEventListener('connectionChange', this.handleConnectivityChange); + + if (typeof this.unsubscribable === "function") { + this.unsubscribable(); + } + + // NetInfo.removeEventListener(this.handleConnectivityChange); } componentWillReceiveProps(nextProps) { @@ -131,9 +138,9 @@ class CachedImage extends React.Component { return this.setState(newState); } - handleConnectivityChange(isConnected) { + handleConnectivityChange(state) { this.safeSetState({ - networkAvailable: isConnected + networkAvailable: state.isConnected }); }