@stolostron/multicluster-sdk
Version:
Provides extensions and APIs that dynamic plugins can use to leverage multicluster capabilities provided by Red Hat Advanced Cluster Management.
56 lines • 2.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleWebsocketEvent = void 0;
/* Copyright Contributors to the Open Cluster Management project */
const handleWebsocketEvent = (event, requestPath, setData, isList, fleetResourceCache, cluster) => {
var _a;
if (!event) {
console.warn('Received undefined event', event);
return;
}
const eventDataParsed = JSON.parse(event.data);
const eventType = eventDataParsed === null || eventDataParsed === void 0 ? void 0 : eventDataParsed.type;
const object = eventDataParsed === null || eventDataParsed === void 0 ? void 0 : eventDataParsed.object;
if (!object)
return;
if (!isList) {
if (eventType === 'ADDED' && fleetResourceCache[requestPath])
return;
const processedEventData = Object.assign({ cluster }, object);
if (processedEventData) {
fleetResourceCache[requestPath] = processedEventData;
setData(processedEventData);
}
return;
}
if (eventType === 'DELETED') {
const storedData = fleetResourceCache[requestPath];
const updatedData = storedData.filter((i) => { var _a, _b; return ((_a = i.metadata) === null || _a === void 0 ? void 0 : _a.uid) !== ((_b = object === null || object === void 0 ? void 0 : object.metadata) === null || _b === void 0 ? void 0 : _b.uid); });
fleetResourceCache[requestPath] = updatedData;
setData(updatedData);
return;
}
if (eventType !== 'ADDED' && eventType !== 'MODIFIED') {
return;
}
if (!((_a = object === null || object === void 0 ? void 0 : object.metadata) === null || _a === void 0 ? void 0 : _a.uid)) {
console.warn('Event object does not have a metadata.uid', eventDataParsed);
return;
}
const storedData = fleetResourceCache[requestPath];
const objectExist = storedData.some((i) => { var _a, _b; return ((_a = i.metadata) === null || _a === void 0 ? void 0 : _a.uid) === ((_b = object === null || object === void 0 ? void 0 : object.metadata) === null || _b === void 0 ? void 0 : _b.uid); });
if (objectExist && eventType === 'MODIFIED') {
const updatedData = storedData.map((i) => { var _a, _b; return (((_a = i.metadata) === null || _a === void 0 ? void 0 : _a.uid) === ((_b = object === null || object === void 0 ? void 0 : object.metadata) === null || _b === void 0 ? void 0 : _b.uid) ? Object.assign({ cluster }, object) : i); });
fleetResourceCache[requestPath] = updatedData;
setData(updatedData);
return;
}
if (!objectExist) {
const updatedData = [...storedData, Object.assign({ cluster }, object)];
fleetResourceCache[requestPath] = updatedData;
setData(updatedData);
return;
}
};
exports.handleWebsocketEvent = handleWebsocketEvent;
//# sourceMappingURL=utils.js.map