add isMobile service and tests

This commit is contained in:
Manuel Araoz 2014-06-19 15:07:20 -03:00
parent 78493f9d91
commit 0347cb5bda
4 changed files with 57 additions and 24 deletions

View File

@ -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);

26
js/services/isMobile.js Normal file
View File

@ -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);

View File

@ -214,4 +214,18 @@ describe("Unit: Controllers", function() {
});
describe('Send Controller', function() {
var sendCtrl;
beforeEach(inject(function($controller, $rootScope) {
scope = $rootScope.$new();
sendCtrl = $controller('SendController', {
$scope: scope,
});
}));
it('should have a SendController', function() {
expect(scope.isMobile).not.to.equal(null);
});
});
});

View File

@ -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);
}));
});