Skip to content

Instantly share code, notes, and snippets.

@welcoMattic
Last active December 4, 2021 04:33
Show Gist options
  • Save welcoMattic/c6415563d6607fbedf3e to your computer and use it in GitHub Desktop.
Save welcoMattic/c6415563d6607fbedf3e 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);
});
});
@ederlima
Copy link

ederlima commented Nov 6, 2014

Thanks man! Works, perfectly!

@henry74
Copy link

henry74 commented Apr 22, 2015

Hey Matt, are you using the ngCordova network plugin for this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment