Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save datatypevoid/6339838fa44b793bca24e020add3c34a to your computer and use it in GitHub Desktop.
Save datatypevoid/6339838fa44b793bca24e020add3c34a to your computer and use it in GitHub Desktop.
Async navigator.connection.type service for Ionic Framework
var myApp = angular.module('myApp').service('CordovaNetwork', ['$ionicPlatform', '$q', function($ionicPlatform, $q) {
// Get Cordova's global Connection object or emulate a smilar one
var Connection = window.Connection || {
"CELL" : "cellular",
"CELL_2G" : "2g",
"CELL_3G" : "3g",
"CELL_4G" : "4g",
"ETHERNET" : "ethernet",
"NONE" : "none",
"UNKNOWN" : "unknown",
"WIFI" : "wifi"
};
var asyncGetConnection = function () {
var q = $q.defer();
$ionicPlatform.ready(function () {
if(navigator.connection) {
q.resolve(navigator.connection);
} else {
q.reject('navigator.connection is not defined');
}
});
return q.promise;
};
return {
isOnline: function () {
return asyncGetConnection().then(function(networkConnection) {
var isConnected = false;
switch (networkConnection.type) {
case Connection.ETHERNET:
case Connection.WIFI:
case Connection.CELL_2G:
case Connection.CELL_3G:
case Connection.CELL_4G:
case Connection.CELL:
isConnected = true;
break;
}
return isConnected;
});
}
};
}]);
myApp.controller('AppCtrl', function(CordovaNetwork){
CordovaNetwork.isOnline().then(function(isConnected) {
alert(isConnected);
}).catch(function(err){
console.log(err);
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment