UNPKG

@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
"use strict"; 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