feat(plugin): Network Information and global offline/online events

This commit is contained in:
Max Lynch
2015-09-28 15:03:13 -05:00
parent 0647967fe3
commit 72658bd970
2 changed files with 65 additions and 0 deletions

View File

@ -50,6 +50,23 @@ export class IonicApp {
this.components = {}; this.components = {};
} }
/**
* Bind some global events and publish on the 'app' channel
*/
bindEvents(events) {
window.addEventListener('online', (event) => {
events.publish('app:online', event);
}, false);
window.addEventListener('offline', (event) => {
events.publish('app:offline', event);
}, false);
window.addEventListener('orientationchange', (event) => {
events.publish('app:rotated', event);
});
}
/** /**
* TODO * TODO
* @param {Object} appRef TODO * @param {Object} appRef TODO
@ -302,6 +319,8 @@ export function ionicBootstrap(rootComponentType, views, config) {
let translate = new Translate(); let translate = new Translate();
let navRegistry = new NavRegistry(views); let navRegistry = new NavRegistry(views);
app.bindEvents(events);
// add injectables that will be available to all child components // add injectables that will be available to all child components
let appBindings = Injector.resolve([ let appBindings = Injector.resolve([
bind(IonicApp).toValue(app), bind(IonicApp).toValue(app),

View File

@ -0,0 +1,46 @@
import * as Rx from 'rx';
import * as util from 'ionic/util';
import {NativePlugin} from '../plugin';
/**
* Access Network information and respond to changes in network state.
*
* @usage
* ```js
* let networkInfo = Network.getNetwork()
* let isOnline = Network.isOnline()
* let isOffline = Network.isOffline()
* ```
*/
@NativePlugin({
name: 'Network',
platforms: ['ios', 'android'],
engines: {
cordova: 'cordova-plugin-network-information'
},
pluginCheck: () => {
return !!navigator.connection;
}
})
@Injectable()
export class Network {
/**
* Return network info.
*/
static info() {
this.ifPlugin(() => {
return navigator.connection.type;
});
}
/**
* @return whether the device is online
*/
static isOnline() {
this.ifPlugin(() => {
var networkState = navigator.connection.type;
return networkState !== window.Connection.UNKNOWN && networkState !== window.Connection.NONE;
});
}
}