Use promises in 'NetInfo'

Reviewed By: svcscm

Differential Revision: D2938010

fb-gh-sync-id: 4a24ce680b37e49759f3325987b4b440eb033b94
shipit-source-id: 4a24ce680b37e49759f3325987b4b440eb033b94
This commit is contained in:
Satyajit Sahoo
2016-02-15 13:33:28 -08:00
committed by facebook-github-bot-9
parent ecb1643fee
commit 14ec6f011e
5 changed files with 39 additions and 41 deletions

View File

@@ -16,6 +16,7 @@ const NativeModules = require('NativeModules');
const Platform = require('Platform');
const RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');
const RCTNetInfo = NativeModules.NetInfo;
const deprecatedCallback = require('deprecatedCallback');
const DEVICE_CONNECTIVITY_EVENT = 'networkStatusDidChange';
@@ -135,8 +136,12 @@ const _isConnectedSubscriptions = new Map();
* monetary costs, data limitations or battery/performance issues.
*
* ```
* NetInfo.isConnectionExpensive((isConnectionExpensive) => {
* NetInfo.isConnectionExpensive()
* .then(isConnectionExpensive => {
* console.log('Connection is ' + (isConnectionExpensive ? 'Expensive' : 'Not Expensive'));
* })
* .catch(error => {
* console.error(error);
* });
* ```
*
@@ -146,7 +151,7 @@ const _isConnectedSubscriptions = new Map();
* internet connectivity.
*
* ```
* NetInfo.isConnected.fetch().done((isConnected) => {
* NetInfo.isConnected.fetch().then(isConnected => {
* console.log('First, is ' + (isConnected ? 'online' : 'offline'));
* });
* function handleFirstConnectivityChange(isConnected) {
@@ -192,14 +197,7 @@ const NetInfo = {
},
fetch(): Promise {
return new Promise((resolve, reject) => {
RCTNetInfo.getCurrentConnectivity(
function(resp) {
resolve(resp.network_info);
},
reject
);
});
return RCTNetInfo.getCurrentConnectivity().then(resp => resp.network_info);
},
isConnected: {
@@ -239,15 +237,13 @@ const NetInfo = {
},
},
isConnectionExpensive(callback: (metered: ?boolean, error?: string) => void): void {
if (Platform.OS === 'android') {
RCTNetInfo.isConnectionMetered((_isMetered) => {
callback(_isMetered);
});
} else {
// TODO t9296080 consider polyfill and more features later on
callback(null, "Unsupported");
}
isConnectionExpensive(): Promise {
return deprecatedCallback(
Platform.OS === 'android' ? RCTNetInfo.isConnectionMetered() : Promise.reject(new Error('Currently not supported on iOS')),
Array.prototype.slice.call(arguments),
'single-callback-value-first',
'NetInfo.isConnectionMetered(callback) is deprecated. Use the returned Promise instead.'
);
},
};