Skip to content

Commit 98973e1

Browse files
committed
MOBILE-1531 remotecss: Compare hash instead of full styles
1 parent 2185c24 commit 98973e1

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

www/addons/remotestyles/services/remotestyles.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ angular.module('mm.addons.remotestyles')
2222
* @name $mmaRemoteStyles
2323
*/
2424
.factory('$mmaRemoteStyles', function($log, $q, $mmSite, $mmSitesManager, $mmFilepool, $http, $mmFS, mmaRemoteStylesComponent,
25-
mmCoreNotDownloaded, $mmUtil) {
25+
mmCoreNotDownloaded, $mmUtil, md5) {
2626

2727
$log = $log.getInstance('$mmaRemoteStyles');
2828

@@ -45,7 +45,10 @@ angular.module('mm.addons.remotestyles')
4545

4646
var el = angular.element('<style id="mobilecssurl-' + siteId + '" disabled="disabled"></style>');
4747
angular.element(document.head).append(el);
48-
remoteStylesEls[siteId] = el;
48+
remoteStylesEls[siteId] = {
49+
element: el,
50+
hash: ''
51+
};
4952

5053
return self.load(siteId, true);
5154
};
@@ -97,7 +100,7 @@ angular.module('mm.addons.remotestyles')
97100
siteId = siteId || $mmSite.getId();
98101

99102
if (remoteStylesEls[siteId]) {
100-
remoteStylesEls[siteId].attr('disabled', false);
103+
remoteStylesEls[siteId].element.attr('disabled', false);
101104
}
102105
};
103106

@@ -166,16 +169,19 @@ angular.module('mm.addons.remotestyles')
166169
$log.debug('Load site: ', siteId, disabled);
167170
if (siteId && remoteStylesEls[siteId]) {
168171
// Enable or disable the styles.
169-
remoteStylesEls[siteId].attr('disabled', disabled);
172+
remoteStylesEls[siteId].element.attr('disabled', disabled);
170173

171174
return self.get(siteId).then(function(data) {
175+
var hash = md5.createHash(data.styles);
176+
172177
// Update the styles only if they have changed.
173-
if (data.styles !== remoteStylesEls[siteId].html()) {
174-
remoteStylesEls[siteId].html(data.styles);
178+
if (remoteStylesEls[siteId].hash !== hash) {
179+
remoteStylesEls[siteId].element.html(data.styles);
180+
remoteStylesEls[siteId].hash = hash;
175181

176182
// New styles will be applied even if the style is disabled. We'll disable it again if needed.
177-
if (disabled && remoteStylesEls[siteId].attr('disabled') == 'disabled') {
178-
remoteStylesEls[siteId].attr('disabled', true);
183+
if (disabled && remoteStylesEls[siteId].element.attr('disabled') == 'disabled') {
184+
remoteStylesEls[siteId].element.attr('disabled', true);
179185
}
180186
}
181187

@@ -232,7 +238,7 @@ angular.module('mm.addons.remotestyles')
232238
*/
233239
self.removeSite = function(siteId) {
234240
if (siteId && remoteStylesEls[siteId]) {
235-
remoteStylesEls[siteId].remove();
241+
remoteStylesEls[siteId].element.remove();
236242
delete remoteStylesEls[siteId];
237243
}
238244
};

0 commit comments

Comments
 (0)