mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
catalog-pusher clean up, replaced .observe_() to external observe() helper from "mobx"
Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
parent
3405c49613
commit
73ebf0a457
@ -19,35 +19,40 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import { reaction } from "mobx";
|
||||
import { autorun } from "mobx";
|
||||
import { broadcastMessage, subscribeToBroadcast, unsubscribeFromBroadcast } from "../common/ipc";
|
||||
import { CatalogEntityRegistry } from "../common/catalog";
|
||||
import "../common/catalog-entities/kubernetes-cluster";
|
||||
import { Disposer } from "../common/utils";
|
||||
import { Disposer, disposer } from "../common/utils";
|
||||
import logger from "./logger";
|
||||
|
||||
export class CatalogPusher {
|
||||
static logPrefix = `[CatalogPusher]`;
|
||||
|
||||
static init(catalog: CatalogEntityRegistry) {
|
||||
new CatalogPusher(catalog).init();
|
||||
return new CatalogPusher(catalog).init();
|
||||
}
|
||||
|
||||
private constructor(private catalog: CatalogEntityRegistry) {
|
||||
}
|
||||
|
||||
init() {
|
||||
const disposers: Disposer[] = [
|
||||
reaction(
|
||||
() => this.catalog.items,
|
||||
(items) => broadcastMessage("catalog:items", items),
|
||||
{ fireImmediately: true }
|
||||
),
|
||||
];
|
||||
private init(): Disposer {
|
||||
logger.info(`${CatalogPusher.logPrefix}: init`);
|
||||
|
||||
const listener = subscribeToBroadcast("catalog:broadcast", () => {
|
||||
const dispose = disposer();
|
||||
|
||||
const broadcastItems = () => {
|
||||
logger.info(`${CatalogPusher.logPrefix}: broadcasting entities`);
|
||||
broadcastMessage("catalog:items", this.catalog.items);
|
||||
});
|
||||
};
|
||||
|
||||
disposers.push(() => unsubscribeFromBroadcast("catalog:broadcast", listener));
|
||||
// broadcast entities when catalog items gets updated
|
||||
dispose.push(autorun(broadcastItems));
|
||||
|
||||
return disposers;
|
||||
// broadcast entities from IPC-event request
|
||||
const listener = subscribeToBroadcast("catalog:broadcast", broadcastItems);
|
||||
dispose.push(() => unsubscribeFromBroadcast("catalog:broadcast", listener));
|
||||
|
||||
return dispose;
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import { action, computed, IComputedValue, makeObservable, observable, ObservableMap, runInAction, } from "mobx";
|
||||
import { action, computed, IComputedValue, makeObservable, observable, ObservableMap, runInAction, observe } from "mobx";
|
||||
import { CatalogEntity, catalogEntityRegistry } from "../../common/catalog";
|
||||
import { watch } from "chokidar";
|
||||
import fs from "fs";
|
||||
@ -74,7 +74,7 @@ export class KubeconfigSyncManager extends Singleton {
|
||||
this.startNewSync(filePath);
|
||||
}
|
||||
|
||||
this.syncListDisposer = UserStore.getInstance().syncKubeconfigEntries.observe_(change => {
|
||||
this.syncListDisposer = observe(UserStore.getInstance().syncKubeconfigEntries, change => {
|
||||
switch (change.type) {
|
||||
case "add":
|
||||
this.startNewSync(change.name);
|
||||
|
||||
@ -19,13 +19,14 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import { action, observable, makeObservable } from "mobx";
|
||||
import { action, makeObservable, observable } from "mobx";
|
||||
import { broadcastMessage, subscribeToBroadcast } from "../../common/ipc";
|
||||
import { CatalogCategory, CatalogEntity, CatalogEntityData, catalogCategoryRegistry, CatalogCategoryRegistry, CatalogEntityKindData } from "../../common/catalog";
|
||||
import { CatalogCategory, catalogCategoryRegistry, CatalogCategoryRegistry, CatalogEntity, CatalogEntityData, CatalogEntityKindData } from "../../common/catalog";
|
||||
import "../../common/catalog-entities";
|
||||
import logger from "../../main/logger";
|
||||
|
||||
export class CatalogEntityRegistry {
|
||||
@observable protected _items: CatalogEntity[] = observable.array();
|
||||
protected _items = observable.array<CatalogEntity>();
|
||||
@observable protected _activeEntity: CatalogEntity;
|
||||
|
||||
constructor(private categoryRegistry: CatalogCategoryRegistry) {
|
||||
@ -33,14 +34,17 @@ export class CatalogEntityRegistry {
|
||||
}
|
||||
|
||||
init() {
|
||||
subscribeToBroadcast("catalog:items", (ev, items: (CatalogEntityData & CatalogEntityKindData)[]) => {
|
||||
subscribeToBroadcast("catalog:items", (event, items: (CatalogEntityData & CatalogEntityKindData)[]) => {
|
||||
logger.info(`[CatalogEntityRegistry]: received new catalog items`, items);
|
||||
this.updateItems(items);
|
||||
});
|
||||
broadcastMessage("catalog:broadcast");
|
||||
}
|
||||
|
||||
@action updateItems(items: (CatalogEntityData & CatalogEntityKindData)[]) {
|
||||
this._items = items.map(data => this.categoryRegistry.getEntityForData(data));
|
||||
this._items.replace(
|
||||
items.map(data => this.categoryRegistry.getEntityForData(data))
|
||||
);
|
||||
}
|
||||
|
||||
set activeEntity(entity: CatalogEntity) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user