mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
* Add the ability to sync kube config files - Will update when the files changes - add KUBECONFIG_SYNC label - fix rebase and change to addObservableSource - move UI to user settings - support shallow folder watching - add some unit tests for the diff-er Signed-off-by: Sebastian Malton <sebastian@malton.name> * responding to review comments Signed-off-by: Sebastian Malton <sebastian@malton.name> * fix tests and add try/catch Signed-off-by: Sebastian Malton <sebastian@malton.name> * always sync c&p folder, remove bad rebase Signed-off-by: Sebastian Malton <sebastian@malton.name> * fix preferences Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix settings saving and catalog view Signed-off-by: Sebastian Malton <sebastian@malton.name> * fix unit tests Signed-off-by: Sebastian Malton <sebastian@malton.name> * fix synced clusters not connectable Signed-off-by: Sebastian Malton <sebastian@malton.name> * change to non-complete shallow watching Signed-off-by: Sebastian Malton <sebastian@malton.name> * fix sizing Signed-off-by: Sebastian Malton <sebastian@malton.name> * Catch readStream errors Signed-off-by: Sebastian Malton <sebastian@malton.name> * don't clear UserStore on non-existant preference field, fix unlinking not removing items from source Signed-off-by: Sebastian Malton <sebastian@malton.name> * change label to file Signed-off-by: Sebastian Malton <sebastian@malton.name>
54 lines
1.8 KiB
TypeScript
54 lines
1.8 KiB
TypeScript
import { action, observable } from "mobx";
|
|
import { broadcastMessage, subscribeToBroadcast } from "../../common/ipc";
|
|
import { CatalogCategory, CatalogEntity, CatalogEntityData, catalogCategoryRegistry, CatalogCategoryRegistry, CatalogEntityKindData } from "../../common/catalog";
|
|
import "../../common/catalog-entities";
|
|
|
|
export class CatalogEntityRegistry {
|
|
@observable protected _items: CatalogEntity[] = observable.array([], { deep: true });
|
|
@observable protected _activeEntity: CatalogEntity;
|
|
|
|
constructor(private categoryRegistry: CatalogCategoryRegistry) {}
|
|
|
|
init() {
|
|
subscribeToBroadcast("catalog:items", (ev, items: (CatalogEntityData & CatalogEntityKindData)[]) => {
|
|
this.updateItems(items);
|
|
});
|
|
broadcastMessage("catalog:broadcast");
|
|
}
|
|
|
|
@action updateItems(items: (CatalogEntityData & CatalogEntityKindData)[]) {
|
|
this._items = items.map(data => this.categoryRegistry.getEntityForData(data));
|
|
}
|
|
|
|
set activeEntity(entity: CatalogEntity) {
|
|
this._activeEntity = entity;
|
|
}
|
|
|
|
get activeEntity() {
|
|
return this._activeEntity;
|
|
}
|
|
|
|
get items() {
|
|
return this._items;
|
|
}
|
|
|
|
getById(id: string) {
|
|
return this._items.find((entity) => entity.metadata.uid === id);
|
|
}
|
|
|
|
getItemsForApiKind<T extends CatalogEntity>(apiVersion: string, kind: string): T[] {
|
|
const items = this._items.filter((item) => item.apiVersion === apiVersion && item.kind === kind);
|
|
|
|
return items as T[];
|
|
}
|
|
|
|
getItemsForCategory<T extends CatalogEntity>(category: CatalogCategory): T[] {
|
|
const supportedVersions = category.spec.versions.map((v) => `${category.spec.group}/${v.name}`);
|
|
const items = this._items.filter((item) => supportedVersions.includes(item.apiVersion) && item.kind === category.spec.names.kind);
|
|
|
|
return items as T[];
|
|
}
|
|
}
|
|
|
|
export const catalogEntityRegistry = new CatalogEntityRegistry(catalogCategoryRegistry);
|