Merge pull request #714 from maraoz/ref/isMobile

add isMobile service and tests
This commit is contained in:
Gustavo Maximiliano Cortez 2014-06-23 10:24:23 -03:00
commit 6f25ea8607
5 changed files with 59 additions and 24 deletions

View File

@ -886,6 +886,7 @@ on supported browsers please check <a href="http://www.webrtc.org/">http://www.w
<script src="js/services/passphrase.js"></script>
<script src="js/services/notifications.js"></script>
<script src="js/services/backupService.js"></script>
<script src="js/services/isMobile.js"></script>
<script src="js/controllers/header.js"></script>
<script src="js/controllers/footer.js"></script>

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

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