(function () { 'use strict'; /** * @ngdoc overview * @name adaptive.detection * * @description * The main module which holds everything together. */ var adaptive = angular.module('adaptive.detection', []); /** * @ngdoc object * @name adaptive.detection.$detectionProvider * * @description * The `$detectionProvider` provides an interface to configure `$detection service for * runtime. */ adaptive.provider('$detection', [function() { this.userAgent = navigator.userAgent; /** * @ngdoc function * @name adaptive.detection.$detectionProvider#setUserAgent * @methodOf adaptive.detection.$detectionProvider * * @description * Let's you configure a custom User Agent string during your apps configuration. * *
* var app = angular.module('myApp', ['adaptive.detection']);
*
* app.config(['$detectionProvider', function ($detectionProvider) {
* // sets custom User Agent
* $detectionProvider.setUserAgent('angular browser');
* }]);
*
*
* @param {string} Custom User Agent string
*/
this.setUserAgent = function(userAgent) {
this.userAgent = userAgent;
};
/**
* @ngdoc object
* @name adaptive.detection.$detection
*
* @description
* The `$detection` service can be injected anywhere in your app during runtime like
* every other service. It provides methods to detect wheter a the current client is
* for example and iOS device or an Android device.
*
* You are also able to retreive the current User Agent using this service.
*/
this.$get = function() {
var userAgent = this.userAgent;
return {
/**
* @ngdoc function
* @name adaptive.detection.$detection#getUserAgent
* @methodOf adaptive.detection.$detection
*
* @description
* Returns the current User Agent which was set with `$detectionProvider.setUserAgent'.
*
* @return {string} userAgent
*/
getUserAgent: function(){
return userAgent;
},
/**
* @ngdoc function
* @name adaptive.detection.$detection#isiOS
* @methodOf adaptive.detection.$detection
*
* @description
* Returns true if current device is an iOS device.
*
* @return {bool}
*/
isiOS: function(){
return (/(iPad|iPhone|iPod)/gi).test(userAgent);
},
/**
* @ngdoc function
* @name adaptive.detection.$detection#isAndroid
* @methodOf adaptive.detection.$detection
*
* @description
* Returns true if current device is an Android device.
*
* @return {bool}
*/
isAndroid: function(){
return (/(Android)/gi).test(userAgent);
},
/**
* @ngdoc function
* @name adaptive.detection.$detection#isWindowsPhone
* @methodOf adaptive.detection.$detection
*
* @description
* Returns true if current device is a Windows Phone device.
*
* @return {bool}
*/
isWindowsPhone: function(){
return (/(IEMobile)/gi).test(userAgent);
},
/**
* @ngdoc function
* @name adaptive.detection.$detection#isBB10
* @methodOf adaptive.detection.$detection
*
* @description
* Returns true if current device is a BlackBerry 10 device.
*
* @return {bool}
*/
isBB10: function(){
return (/(BB10)/gi).test(userAgent);
},
isMobile: function(){
return this.isiOS() || this.isAndroid() || this.isBB10() || this.isWindowsPhone();
}
};
};
}]);
})();