Reduce in metrics reducer

Summary: Actually reduce in the reducer step instead of using mutable state.

Reviewed By: jknoxville

Differential Revision: D15603095

fbshipit-source-id: f603ca548bb760db5423a4c1871d94284ece9521
This commit is contained in:
Pascal Hartig
2019-06-03 14:38:41 -07:00
committed by Facebook Github Bot
parent befaecbf7c
commit 023135ad74

View File

@@ -130,26 +130,28 @@ export default class extends FlipperPlugin<PluginState, *, PersistedState> {
persistedState: PersistedState, persistedState: PersistedState,
): Promise<MetricType> => { ): Promise<MetricType> => {
const {events, imagesMap} = persistedState; const {events, imagesMap} = persistedState;
let wastedBytes = 0; let wastedBytes = events.reduce((acc, event) => {
events.forEach(event => {
const {viewport, imageIds} = event; const {viewport, imageIds} = event;
if (!viewport) { if (!viewport) {
return; return acc;
} }
imageIds.forEach(imageID => { return (
const imageData: ImageData = imagesMap[imageID]; acc +
if (!imageData) { imageIds.reduce((innerAcc, imageID) => {
return; const imageData: ImageData = imagesMap[imageID];
} if (!imageData) {
const imageWidth: number = imageData.width; return innerAcc;
const imageHeight: number = imageData.height; }
const viewPortWidth: number = viewport.width; const imageWidth: number = imageData.width;
const viewPortHeight: number = viewport.height; const imageHeight: number = imageData.height;
const viewPortArea = viewPortWidth * viewPortHeight; const viewPortWidth: number = viewport.width;
const imageArea = imageWidth * imageHeight; const viewPortHeight: number = viewport.height;
wastedBytes += Math.max(0, imageArea - viewPortArea); const viewPortArea = viewPortWidth * viewPortHeight;
}); const imageArea = imageWidth * imageHeight;
}); return innerAcc + Math.max(0, imageArea - viewPortArea);
}, acc)
);
}, 0);
return Promise.resolve({WASTED_BYTES: wastedBytes}); return Promise.resolve({WASTED_BYTES: wastedBytes});
}; };