/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
export function initialExceptionsState() { return { // Store exception objects created by actions/exceptions.js's addExceptionFromResources() // This is keyed by source actor id, and values are arrays of exception objects.
mutableExceptionsMap: new Map(),
};
}
let exceptions = mutableExceptionsMap.get(sourceActorId); if (!exceptions) {
exceptions = [];
mutableExceptionsMap.set(sourceActorId, exceptions);
} elseif (
exceptions.some(({ lineNumber, columnNumber }) => { return (
lineNumber == exception.lineNumber &&
columnNumber == exception.columnNumber
);
})
) { // Avoid adding duplicated exceptions for the same line/column return state;
}
// As these arrays are only used by getSelectedSourceExceptions selector method, // which coalesce multiple arrays and always return new array instance, // it isn't important to clone these array in case of modification.
exceptions.push(exception);
return {
...state,
};
}
function removeExceptionsFromThread(state, action) { const { mutableExceptionsMap } = state; const { threadActorID } = action; const sizeBefore = mutableExceptionsMap.size; for (const [sourceActorId, exceptions] of mutableExceptionsMap) { // All exceptions relates to the same source actor, and so, the same thread actor. if (exceptions[0].threadActorId == threadActorID) {
mutableExceptionsMap.delete(sourceActorId);
}
} if (sizeBefore != mutableExceptionsMap.size) { return {
...state,
};
} return state;
}
export default update;
¤ Dauer der Verarbeitung: 0.24 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.