Skip to content

Commit

Permalink
Slight tidy-up of device.js
Browse files Browse the repository at this point in the history
The binding to 'resize' should not happen until Adapt.config is available.
  • Loading branch information
brian-learningpool committed Jun 15, 2016
1 parent 8ca0861 commit 76de9ba
Showing 1 changed file with 19 additions and 18 deletions.
37 changes: 19 additions & 18 deletions src/core/js/device.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,44 @@ define(function(require) {

var Adapt = require('coreJS/adapt');
var Bowser = require('coreJS/libraries/bowser');

Adapt.device = {};

var $window = $(window);

// Check whether device is touch enabled
Adapt.device.touch = Modernizr.touch;
Adapt.device = {
touch: Modernizr.touch,
screenWidth: isAppleDevice() ? screen.width : window.innerWidth || $window.width()
};

Adapt.once('app:dataReady', function() {
// The theme.json will have been loaded at this point
Adapt.device.screenSize = checkScreenSize();

$('html').addClass("size-"+Adapt.device.screenSize);
});
$('html').addClass("size-" + Adapt.device.screenSize);

Adapt.device.screenWidth = isAppleDevice()
? screen.width
: window.innerWidth || $window.width();
// As Adapt.config is available it's ok to bind the 'resize'.
$window.on('resize', onWindowResize);
});

/**
* Compares the calculated screen width to the breakpoints defined in config.json.
*
* @returns {string} 'large', 'medium' or 'small'
*/
function checkScreenSize() {

var screenSizeConfig = Adapt.config.get('screenSize');
var screenSize;

if (Adapt.device.screenWidth > Adapt.config.get('screenSize').medium) {
if (Adapt.device.screenWidth > screenSizeConfig.medium) {
screenSize = 'large';
} else if (Adapt.device.screenWidth > Adapt.config.get('screenSize').small) {
} else if (Adapt.device.screenWidth > screenSizeConfig.small) {
screenSize = 'medium';
} else {
screenSize = 'small';
}

return screenSize;
}

var onWindowResize = _.debounce(function onScreenSizeChanged() {

// Calculate the screen width.
Adapt.device.screenWidth = isAppleDevice()
? screen.width
: window.innerWidth || $window.width();
Expand All @@ -46,7 +49,7 @@ define(function(require) {
if (newScreenSize !== Adapt.device.screenSize) {
Adapt.device.screenSize = newScreenSize;

$('html').removeClass("size-small size-medium size-large").addClass("size-"+Adapt.device.screenSize);
$('html').removeClass("size-small size-medium size-large").addClass("size-" + Adapt.device.screenSize);

Adapt.trigger('device:changed', Adapt.device.screenSize);
}
Expand All @@ -55,8 +58,6 @@ define(function(require) {

}, 100);

$window.on('resize', onWindowResize);

var browser = Bowser.name;
var version = Bowser.version;
var OS = Bowser.osversion;
Expand Down

0 comments on commit 76de9ba

Please sign in to comment.