From dddc9d0cf6e3036158ba0c0d51ce5711e01f61cc Mon Sep 17 00:00:00 2001 From: Jonathan Rainville Date: Tue, 12 Mar 2019 16:20:47 -0400 Subject: [PATCH] fix(cockpit/firefox): fix bug with entities in firefox (ordering) --- packages/embark-ui/src/reducers/index.js | 10 +++++----- packages/embark/src/lib/core/services_monitor.js | 10 +++++++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/embark-ui/src/reducers/index.js b/packages/embark-ui/src/reducers/index.js index 6eb1d50bc..f9328d050 100644 --- a/packages/embark-ui/src/reducers/index.js +++ b/packages/embark-ui/src/reducers/index.js @@ -88,7 +88,7 @@ const sorter = { }, }; -const filtrer = { +const filters = { processes: function(process, index, self) { if (["embark", "blockchain"].indexOf(process.name) === -1) return false; return index === self.findIndex((t) => t.name === process.name); @@ -151,8 +151,8 @@ function entities(state = entitiesDefaultState, action) { return {...state, files: action.files}; } for (let name of Object.keys(state)) { - let filter = filtrer[name] || (() => true); - let sort = sorter[name] || (() => true); + let filter = filters[name] || (() => true); + let sort = sorter[name] || (() => 0); if (action[name] && action[name].length > 1) { return {...state, [name]: [...action[name], ...state[name]].sort(sort).filter(filter)}; } @@ -160,8 +160,8 @@ function entities(state = entitiesDefaultState, action) { let entity = action[name][0]; let nested = Object.keys(state).reduce((acc, entityName) => { if (entity && entity[entityName] && entity[entityName].length > 0) { - let entityFilter = filtrer[entityName] || (() => true); - let entitySort = sorter[entityName] || (() => true); + let entityFilter = filters[entityName] || (() => true); + let entitySort = sorter[entityName] || (() => 0); acc[entityName] = [...entity[entityName], ...state[entityName]].sort(entitySort).filter(entityFilter); } return acc; diff --git a/packages/embark/src/lib/core/services_monitor.js b/packages/embark/src/lib/core/services_monitor.js index 9077f2f5a..5b99e4224 100644 --- a/packages/embark/src/lib/core/services_monitor.js +++ b/packages/embark/src/lib/core/services_monitor.js @@ -1,4 +1,5 @@ -let async = require('../utils/async_extend.js'); +const async = require('../utils/async_extend.js'); +const deepEqual = require('deep-equal'); class ServicesMonitor { constructor(options) { @@ -32,9 +33,12 @@ ServicesMonitor.prototype.initCheck = function (checkName) { if (check && check.status === 'on' && obj.status === 'off') { self.events.emit('check:wentOffline:' + checkName); } - self.checkState[checkName] = {name: obj.name, status: obj.status, serviceName: checkName}; check.status = obj.status; - self.events.emit("servicesState", self.checkState); + const newState = {name: obj.name, status: obj.status, serviceName: checkName}; + if (!deepEqual(newState, self.checkState[checkName])) { + self.checkState[checkName] = {name: obj.name, status: obj.status, serviceName: checkName}; + self.events.emit("servicesState", self.checkState); + } }); if (check.interval !== 0) {