diff --git a/index.html b/index.html
index 77c8734be..f3f2a79a7 100644
--- a/index.html
+++ b/index.html
@@ -886,6 +886,7 @@ on supported browsers please check http://www.w
+
diff --git a/js/controllers/send.js b/js/controllers/send.js
index 8320e9f2d..49a5506c8 100644
--- a/js/controllers/send.js
+++ b/js/controllers/send.js
@@ -2,7 +2,7 @@
var bitcore = require('bitcore');
angular.module('copayApp.controllers').controller('SendController',
- function($scope, $rootScope, $window, $location, $timeout, $anchorScroll, $modal) {
+ function($scope, $rootScope, $window, $location, $timeout, $anchorScroll, $modal, isMobile) {
$scope.title = 'Send';
$scope.loading = false;
var satToUnit = 1 / config.unitToSatoshi;
@@ -23,29 +23,6 @@ angular.module('copayApp.controllers').controller('SendController',
return flag;
};
- // TODO this shouldnt be on a particular controller.
- // Detect mobile devices
- var isMobile = {
- Android: function() {
- return navigator.userAgent.match(/Android/i);
- },
- BlackBerry: function() {
- return navigator.userAgent.match(/BlackBerry/i);
- },
- iOS: function() {
- return navigator.userAgent.match(/iPhone|iPad|iPod/i);
- },
- Opera: function() {
- return navigator.userAgent.match(/Opera Mini/i);
- },
- Windows: function() {
- return navigator.userAgent.match(/IEMobile/i);
- },
- any: function() {
- return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
- }
- };
-
// Detect protocol
$scope.isHttp = ($window.location.protocol.indexOf('http') === 0);
diff --git a/js/services/isMobile.js b/js/services/isMobile.js
new file mode 100644
index 000000000..de0150070
--- /dev/null
+++ b/js/services/isMobile.js
@@ -0,0 +1,26 @@
+'use strict';
+
+// Detect mobile devices
+var isMobile = {
+ Android: function() {
+ return !! navigator.userAgent.match(/Android/i);
+ },
+ BlackBerry: function() {
+ return !! navigator.userAgent.match(/BlackBerry/i);
+ },
+ iOS: function() {
+ return !! navigator.userAgent.match(/iPhone|iPad|iPod/i);
+ },
+ Opera: function() {
+ return !! navigator.userAgent.match(/Opera Mini/i);
+ },
+ Windows: function() {
+ return !! navigator.userAgent.match(/IEMobile/i);
+ },
+ any: function() {
+ return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
+ }
+};
+
+
+angular.module('copayApp.services').value('isMobile', isMobile);
diff --git a/test/unit/controllers/controllersSpec.js b/test/unit/controllers/controllersSpec.js
index 736cb2cac..b41524a74 100644
--- a/test/unit/controllers/controllersSpec.js
+++ b/test/unit/controllers/controllersSpec.js
@@ -214,4 +214,19 @@ describe("Unit: Controllers", function() {
});
+ describe('Send Controller', function() {
+ var sendCtrl;
+ beforeEach(inject(function($controller, $rootScope) {
+ scope = $rootScope.$new();
+ sendCtrl = $controller('SendController', {
+ $scope: scope,
+ $modal: {},
+ });
+ }));
+
+ it('should have a SendController', function() {
+ expect(scope.isMobile).not.to.equal(null);
+ });
+ });
+
});
diff --git a/test/unit/services/servicesSpec.js b/test/unit/services/servicesSpec.js
index b515e6bf7..8940bb70a 100644
--- a/test/unit/services/servicesSpec.js
+++ b/test/unit/services/servicesSpec.js
@@ -108,3 +108,19 @@ describe("Unit: Backup Service", function() {
expectation.once();
}));
});
+
+describe("Unit: isMobile Service", function() {
+ beforeEach(angular.mock.module('copayApp.services'));
+ it('should contain a isMobile service', inject(function(isMobile) {
+ expect(isMobile).not.to.equal(null);
+ }));
+ it('should not detect mobile by default', inject(function(isMobile) {
+ isMobile.any().should.equal(false);
+ }));
+ it('should detect mobile if user agent is Android', inject(function(isMobile) {
+ navigator.__defineGetter__('userAgent', function(){
+ return 'Android 2.2.3';
+ });
+ isMobile.any().should.equal(true);
+ }));
+});