diff --git a/src/index.ts b/src/index.ts index a121d68b5..c2d8f1399 100644 --- a/src/index.ts +++ b/src/index.ts @@ -35,6 +35,7 @@ import {InAppBrowser} from './plugins/inappbrowser'; import {Keyboard} from './plugins/keyboard'; import {LaunchNavigator} from './plugins/launchnavigator'; import {LocalNotifications} from './plugins/localnotifications'; +import {Network, Connection} from './plugins/network'; import {Push} from './plugins/push'; import {SMS} from './plugins/sms'; import {SocialSharing} from './plugins/socialsharing'; @@ -58,6 +59,7 @@ export { Calendar, Camera, Clipboard, + Connection, Contacts, DatePicker, DBMeter, @@ -76,6 +78,7 @@ export { Keyboard, LaunchNavigator, LocalNotifications, + Network, Push, SMS, SocialSharing, @@ -103,6 +106,7 @@ window['IonicNative'] = { Calendar: Calendar, Camera: Camera, Clipboard: Clipboard, + Connection: Connection, Contacts: Contacts, DatePicker: DatePicker, DBMeter: DBMeter, @@ -121,6 +125,7 @@ window['IonicNative'] = { Keyboard: Keyboard, LaunchNavigator: LaunchNavigator, LocalNotifications: LocalNotifications, + Network: Network, Push: Push, SMS: SMS, SocialSharing: SocialSharing, diff --git a/src/plugins/network.ts b/src/plugins/network.ts new file mode 100644 index 000000000..df9bb47a1 --- /dev/null +++ b/src/plugins/network.ts @@ -0,0 +1,87 @@ +import {Plugin, Cordova, CordovaProperty} from './plugin'; +import {Observable} from "rxjs/Observable"; + +declare var navigator; + +/** + * @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 + * import {Network, Connection} from 'ionic-native'; + * + * // 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(() => { + * console.log('network connected!'); + * // use a timeout so that we can determine what type of connection we have + * setTimeout(() => { + * console.log(Network.connection); + * if (Network.connection === Connection.WIFI) { + * console.log('we got a wifi connection, woohoo!'); + * } + * }); + * }); + * + * // stop connect watch + * connectSubscription.unsubscribe(); + * + * ``` + */ +@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 + static get connection() : Connection { return navigator.connection.type; } + // static get preferences() { return window.AppRate.preferences; } + + /** + * Watch the network for a disconnect (i.e. network goes offline) + * @returns {Observable} Returns an observable. + */ + @Cordova({ + eventObservable: true, + event: 'offline' + }) + static onDisconnect() : Observable { return } + + /** + * Watch the network for a connection (i.e. network goes online) + * @returns {Observable} Returns an observable. + */ + @Cordova({ + eventObservable: true, + event: 'online' + }) + static onConnect() : Observable { return; } + +} + +export class Connection { + static get UNKNOWN() { return "unknown"; } + static get ETHERNET() { return "ethernet"; } + static get WIFI() { return "wifi"; } + static get CELL_2G() { return "2g"; } + static get CELL_3G() { return "3g"; } + static get CELL_4G() { return "4g"; } + static get CELL() { return "cellular"; } + static get NONE() { return "none"; } +}