mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Convert store items to Map before events buffer manipulations
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
parent
31f4382c82
commit
c72ceaaf72
@ -377,7 +377,7 @@ export abstract class KubeObjectStore<T extends KubeObject> extends ItemStore<T>
|
|||||||
// collect items from watch-api events to avoid UI blowing up with huge streams of data
|
// collect items from watch-api events to avoid UI blowing up with huge streams of data
|
||||||
protected eventsBuffer = observable.array<IKubeWatchEvent<KubeJsonApiData>>([], { deep: false });
|
protected eventsBuffer = observable.array<IKubeWatchEvent<KubeJsonApiData>>([], { deep: false });
|
||||||
|
|
||||||
protected bindWatchEventsUpdater(delay = 1000) {
|
protected bindWatchEventsUpdater(delay = 4000) {
|
||||||
reaction(() => this.eventsBuffer.length, this.updateFromEventsBuffer, {
|
reaction(() => this.eventsBuffer.length, this.updateFromEventsBuffer, {
|
||||||
delay,
|
delay,
|
||||||
});
|
});
|
||||||
@ -455,7 +455,9 @@ export abstract class KubeObjectStore<T extends KubeObject> extends ItemStore<T>
|
|||||||
|
|
||||||
@action
|
@action
|
||||||
protected updateFromEventsBuffer() {
|
protected updateFromEventsBuffer() {
|
||||||
const items = this.getItems();
|
// const items = this.getItems();
|
||||||
|
const groupedItems: [string, T][] = this.getItems().map(item => [item.getId(), item]);
|
||||||
|
const items = new Map<string, T>(groupedItems);
|
||||||
|
|
||||||
for (const event of this.eventsBuffer.clear()) {
|
for (const event of this.eventsBuffer.clear()) {
|
||||||
if (event.type === "ERROR") {
|
if (event.type === "ERROR") {
|
||||||
@ -471,8 +473,9 @@ export abstract class KubeObjectStore<T extends KubeObject> extends ItemStore<T>
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const index = items.findIndex(item => item.getId() === object.metadata.uid);
|
// const index = items.findIndex(item => item.getId() === object.metadata.uid);
|
||||||
const item = items[index];
|
const { uid } = object.metadata;
|
||||||
|
const item = items.get(uid);
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "ADDED":
|
case "ADDED":
|
||||||
@ -482,16 +485,16 @@ export abstract class KubeObjectStore<T extends KubeObject> extends ItemStore<T>
|
|||||||
const newItem = new this.api.objectConstructor(object);
|
const newItem = new this.api.objectConstructor(object);
|
||||||
|
|
||||||
if (!item) {
|
if (!item) {
|
||||||
items.push(newItem);
|
items.set(uid, newItem);
|
||||||
} else {
|
} else {
|
||||||
items[index] = newItem;
|
items.set(uid, newItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "DELETED":
|
case "DELETED":
|
||||||
if (item) {
|
if (item) {
|
||||||
items.splice(index, 1);
|
items.delete(uid);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -500,7 +503,8 @@ export abstract class KubeObjectStore<T extends KubeObject> extends ItemStore<T>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// update items
|
const updatedItems = Array.from(items.values());
|
||||||
this.items.replace(this.sortItems(items.slice(-this.bufferSize)));
|
|
||||||
|
this.items.replace(this.sortItems(updatedItems));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user