2016-07-18 02:02:13 +08:00
|
|
|
|
import { Cordova, CordovaProperty, Plugin } from './plugin';
|
|
|
|
|
import { Observable } from 'rxjs/Observable';
|
|
|
|
|
|
2016-03-28 10:07:40 +08:00
|
|
|
|
|
2016-04-30 11:56:49 +08:00
|
|
|
|
declare var navigator: any;
|
2016-03-28 10:07:40 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name Network
|
|
|
|
|
* @description
|
|
|
|
|
* Requires Cordova plugin: cordova-plugin-network-information. For more info, please see the [Network plugin docs](https://github.com/apache/cordova-plugin-network-information).
|
|
|
|
|
*
|
|
|
|
|
* @usage
|
|
|
|
|
* ```js
|
2016-07-12 05:15:34 +08:00
|
|
|
|
* import {Network} from 'ionic-native';
|
2016-03-28 10:07:40 +08:00
|
|
|
|
*
|
|
|
|
|
* // watch network for a disconnect
|
|
|
|
|
* let disconnectSubscription = Network.onDisconnect().subscribe(() => {
|
|
|
|
|
* console.log('network was disconnected :-( ')
|
|
|
|
|
* });
|
|
|
|
|
*
|
|
|
|
|
* // stop disconnect watch
|
|
|
|
|
* disconnectSubscription.unsubscribe();
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* // watch network for a connection
|
|
|
|
|
* let connectSubscription = Network.onConnect().subscribe(() => {
|
2016-03-28 12:17:07 +08:00
|
|
|
|
* console.log('network connected!');
*
|
|
|
|
|
* // We just got a connection but we need to wait briefly
|
2016-05-21 04:59:18 +08:00
|
|
|
|
*
// before we determine the connection type. Might need to wait
|
2016-03-28 12:17:07 +08:00
|
|
|
|
* // prior to doing any api requests as well.
|
2016-03-28 10:07:40 +08:00
|
|
|
|
* setTimeout(() => {
|
2016-07-12 05:15:34 +08:00
|
|
|
|
* if (Network.connection === 'wifi') {
|
2016-03-28 10:07:40 +08:00
|
|
|
|
* console.log('we got a wifi connection, woohoo!');
|
|
|
|
|
* }
|
2016-05-01 03:58:46 +08:00
|
|
|
|
* }, 3000);
|
2016-03-28 10:07:40 +08:00
|
|
|
|
* });
|
|
|
|
|
*
|
|
|
|
|
* // stop connect watch
|
|
|
|
|
* connectSubscription.unsubscribe();
|
|
|
|
|
*
|
|
|
|
|
* ```
|
2016-07-12 05:15:34 +08:00
|
|
|
|
* @advanced
|
|
|
|
|
* The `connection` property will return one of the following connection types: `unknown`, `ethernet`, `wifi`, `2g`, `3g`, `4g`, `cellular`, `none`
|
2016-03-28 10:07:40 +08:00
|
|
|
|
*/
|
|
|
|
|
@Plugin({
|
|
|
|
|
plugin: 'cordova-plugin-network-information',
|
|
|
|
|
repo: 'https://github.com/apache/cordova-plugin-network-information',
|
|
|
|
|
platforms: ['Amazon Fire OS', 'iOS', 'Android', 'BlackBerry 10', 'Windows Phone 7', 'Windows Phone 8', 'Windows', 'Firefox OS', 'Browser'],
|
|
|
|
|
pluginRef: 'navigator.connection'
|
|
|
|
|
})
|
|
|
|
|
export class Network {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return the network connection type
|
|
|
|
|
*/
|
|
|
|
|
@CordovaProperty
|
2016-07-12 05:15:34 +08:00
|
|
|
|
static get connection(): String { return navigator.connection.type; }
|
2016-03-28 10:07:40 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2016-04-30 11:56:49 +08:00
|
|
|
|
* Get notified when the device goes offline
|
2016-03-28 10:07:40 +08:00
|
|
|
|
* @returns {Observable<any>} Returns an observable.
|
|
|
|
|
*/
|
|
|
|
|
@Cordova({
|
|
|
|
|
eventObservable: true,
|
|
|
|
|
event: 'offline'
|
|
|
|
|
})
|
2016-04-30 11:56:49 +08:00
|
|
|
|
static onDisconnect(): Observable<any> { return; }
|
2016-03-28 10:07:40 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2016-04-30 11:56:49 +08:00
|
|
|
|
* Get notified when the device goes online
|
2016-03-28 10:07:40 +08:00
|
|
|
|
* @returns {Observable<any>} Returns an observable.
|
|
|
|
|
*/
|
|
|
|
|
@Cordova({
|
|
|
|
|
eventObservable: true,
|
|
|
|
|
event: 'online'
|
|
|
|
|
})
|
2016-04-30 11:56:49 +08:00
|
|
|
|
static onConnect(): Observable<any> { return; }
|
2016-03-28 10:07:40 +08:00
|
|
|
|
|
|
|
|
|
}
|