1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Remove unnecessary code style changes

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
Janne Savolainen 2022-03-29 08:03:25 +03:00
parent dd11bcd67e
commit 5113729e87
No known key found for this signature in database
GPG Key ID: 8C6CFB2FFFE8F68A
19 changed files with 88 additions and 203 deletions

View File

@ -6,11 +6,7 @@
import { anyObject } from "jest-mock-extended"; import { anyObject } from "jest-mock-extended";
import mockFs from "mock-fs"; import mockFs from "mock-fs";
import logger from "../../main/logger"; import logger from "../../main/logger";
import type { import type { CatalogEntity, CatalogEntityData, CatalogEntityKindData } from "../catalog";
CatalogEntity,
CatalogEntityData,
CatalogEntityKindData,
} from "../catalog";
import { HotbarStore } from "../hotbar-store"; import { HotbarStore } from "../hotbar-store";
import { getDiForUnitTesting } from "../../main/getDiForUnitTesting"; import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
import hotbarStoreInjectable from "../hotbar-store.injectable"; import hotbarStoreInjectable from "../hotbar-store.injectable";
@ -72,9 +68,7 @@ jest.mock("../../main/catalog/catalog-entity-registry", () => ({
}, },
})); }));
function getMockCatalogEntity( function getMockCatalogEntity(data: Partial<CatalogEntityData> & CatalogEntityKindData): CatalogEntity {
data: Partial<CatalogEntityData> & CatalogEntityKindData,
): CatalogEntity {
return { return {
getName: jest.fn(() => data.metadata?.name), getName: jest.fn(() => data.metadata?.name),
getId: jest.fn(() => data.metadata?.uid), getId: jest.fn(() => data.metadata?.uid),
@ -233,16 +227,9 @@ describe("HotbarStore", () => {
// aws -> catalog // aws -> catalog
hotbarStore.restackItems(3, 0); hotbarStore.restackItems(3, 0);
const items = hotbarStore const items = hotbarStore.getActive().items.map(item => item?.entity.uid || null);
.getActive()
.items.map((item) => item?.entity.uid || null);
expect(items.slice(0, 4)).toEqual([ expect(items.slice(0, 4)).toEqual(["aws", "catalog-entity", "test", "minikube"]);
"aws",
"catalog-entity",
"test",
"minikube",
]);
}); });
it("moves items up", () => { it("moves items up", () => {
@ -255,16 +242,9 @@ describe("HotbarStore", () => {
// test -> aws // test -> aws
hotbarStore.restackItems(1, 3); hotbarStore.restackItems(1, 3);
const items = hotbarStore const items = hotbarStore.getActive().items.map(item => item?.entity.uid || null);
.getActive()
.items.map((item) => item?.entity.uid || null);
expect(items.slice(0, 4)).toEqual([ expect(items.slice(0, 4)).toEqual(["catalog-entity", "minikube", "aws", "test"]);
"catalog-entity",
"minikube",
"aws",
"test",
]);
}); });
it("logs an error if cellIndex is out of bounds", () => { it("logs an error if cellIndex is out of bounds", () => {
@ -279,22 +259,13 @@ describe("HotbarStore", () => {
logger.error = mocked; logger.error = mocked;
hotbarStore.addToHotbar(testCluster, -1); hotbarStore.addToHotbar(testCluster, -1);
expect(mocked).toBeCalledWith( expect(mocked).toBeCalledWith("[HOTBAR-STORE]: cannot pin entity to hotbar outside of index range", anyObject());
"[HOTBAR-STORE]: cannot pin entity to hotbar outside of index range",
anyObject(),
);
hotbarStore.addToHotbar(testCluster, 12); hotbarStore.addToHotbar(testCluster, 12);
expect(mocked).toBeCalledWith( expect(mocked).toBeCalledWith("[HOTBAR-STORE]: cannot pin entity to hotbar outside of index range", anyObject());
"[HOTBAR-STORE]: cannot pin entity to hotbar outside of index range",
anyObject(),
);
hotbarStore.addToHotbar(testCluster, 13); hotbarStore.addToHotbar(testCluster, 13);
expect(mocked).toBeCalledWith( expect(mocked).toBeCalledWith("[HOTBAR-STORE]: cannot pin entity to hotbar outside of index range", anyObject());
"[HOTBAR-STORE]: cannot pin entity to hotbar outside of index range",
anyObject(),
);
logger.error = error; logger.error = error;
}); });
@ -302,23 +273,15 @@ describe("HotbarStore", () => {
it("throws an error if getId is invalid or returns not a string", () => { it("throws an error if getId is invalid or returns not a string", () => {
const hotbarStore = HotbarStore.getInstance(); const hotbarStore = HotbarStore.getInstance();
expect(() => hotbarStore.addToHotbar({} as any)).toThrowError( expect(() => hotbarStore.addToHotbar({} as any)).toThrowError(TypeError);
TypeError, expect(() => hotbarStore.addToHotbar({ getId: () => true } as any)).toThrowError(TypeError);
);
expect(() =>
hotbarStore.addToHotbar({ getId: () => true } as any),
).toThrowError(TypeError);
}); });
it("throws an error if getName is invalid or returns not a string", () => { it("throws an error if getName is invalid or returns not a string", () => {
const hotbarStore = HotbarStore.getInstance(); const hotbarStore = HotbarStore.getInstance();
expect(() => expect(() => hotbarStore.addToHotbar({ getId: () => "" } as any)).toThrowError(TypeError);
hotbarStore.addToHotbar({ getId: () => "" } as any), expect(() => hotbarStore.addToHotbar({ getId: () => "", getName: () => 4 } as any)).toThrowError(TypeError);
).toThrowError(TypeError);
expect(() =>
hotbarStore.addToHotbar({ getId: () => "", getName: () => 4 } as any),
).toThrowError(TypeError);
}); });
it("does nothing when item moved to same cell", () => { it("does nothing when item moved to same cell", () => {
@ -443,9 +406,7 @@ describe("HotbarStore", () => {
}); });
it("allows to retrieve a hotbar", () => { it("allows to retrieve a hotbar", () => {
const hotbar = HotbarStore.getInstance().getById( const hotbar = HotbarStore.getInstance().getById("3caac17f-aec2-4723-9694-ad204465d935");
"3caac17f-aec2-4723-9694-ad204465d935",
);
expect(hotbar.id).toBe("3caac17f-aec2-4723-9694-ad204465d935"); expect(hotbar.id).toBe("3caac17f-aec2-4723-9694-ad204465d935");
}); });

View File

@ -48,12 +48,9 @@ export abstract class BaseStore<T> extends Singleton {
*/ */
load() { load() {
if (!isTestEnv) { if (!isTestEnv) {
logger.info( logger.info(`[${kebabCase(this.displayName).toUpperCase()}]: LOADING from ${this.path} ...`);
`[${kebabCase(this.displayName).toUpperCase()}]: LOADING from ${
this.path
} ...`,
);
} }
const di = getLegacyGlobalDiForExtensionApi(); const di = getLegacyGlobalDiForExtensionApi();
const getConfigurationFileModel = di.inject(getConfigurationFileModelInjectable); const getConfigurationFileModel = di.inject(getConfigurationFileModelInjectable);
@ -67,23 +64,14 @@ export abstract class BaseStore<T> extends Singleton {
const res: any = this.fromStore(this.storeConfig.store); const res: any = this.fromStore(this.storeConfig.store);
if ( if (res instanceof Promise || (typeof res === "object" && res && typeof res.then === "function")) {
res instanceof Promise || console.error(`${this.displayName} extends BaseStore<T>'s fromStore method returns a Promise or promise-like object. This is an error and must be fixed.`);
(typeof res === "object" && res && typeof res.then === "function")
) {
console.error(
`${this.displayName} extends BaseStore<T>'s fromStore method returns a Promise or promise-like object. This is an error and must be fixed.`,
);
} }
this.enableSync(); this.enableSync();
if (!isTestEnv) { if (!isTestEnv) {
logger.info( logger.info(`[${kebabCase(this.displayName).toUpperCase()}]: LOADED from ${this.path}`);
`[${kebabCase(this.displayName).toUpperCase()}]: LOADED from ${
this.path
}`,
);
} }
} }
@ -124,27 +112,23 @@ export abstract class BaseStore<T> extends Singleton {
this.syncDisposers.push( this.syncDisposers.push(
reaction( reaction(
() => toJS(this.toJSON()), // unwrap possible observables and react to everything () => toJS(this.toJSON()), // unwrap possible observables and react to everything
(model) => this.onModelChange(model), model => this.onModelChange(model),
this.params.syncOptions, this.params.syncOptions,
), ),
); );
if (ipcMain) { if (ipcMain) {
this.syncDisposers.push( this.syncDisposers.push(ipcMainOn(this.syncMainChannel, (event, model: T) => {
ipcMainOn(this.syncMainChannel, (event, model: T) => {
logger.silly(`[STORE]: SYNC ${this.name} from renderer`, { model }); logger.silly(`[STORE]: SYNC ${this.name} from renderer`, { model });
this.onSync(model); this.onSync(model);
}), }));
);
} }
if (ipcRenderer) { if (ipcRenderer) {
this.syncDisposers.push( this.syncDisposers.push(ipcRendererOn(this.syncRendererChannel, (event, model: T) => {
ipcRendererOn(this.syncRendererChannel, (event, model: T) => {
logger.silly(`[STORE]: SYNC ${this.name} from main`, { model }); logger.silly(`[STORE]: SYNC ${this.name} from main`, { model });
this.onSyncFromMain(model); this.onSyncFromMain(model);
}), }));
);
} }
} }
@ -160,7 +144,7 @@ export abstract class BaseStore<T> extends Singleton {
} }
disableSync() { disableSync() {
this.syncDisposers.forEach((dispose) => dispose()); this.syncDisposers.forEach(dispose => dispose());
this.syncDisposers.length = 0; this.syncDisposers.length = 0;
} }

View File

@ -16,4 +16,7 @@ export const asLegacyGlobalObjectForExtensionApiWithModifications = <
injectable: Injectable<InjectableInstance, InjectionTokenInstance, void>, injectable: Injectable<InjectableInstance, InjectionTokenInstance, void>,
modificationObject: ModificationObject, modificationObject: ModificationObject,
) => ) =>
Object.assign(asLegacyGlobalForExtensionApi(injectable), modificationObject); Object.assign(
asLegacyGlobalForExtensionApi(injectable),
modificationObject,
);

View File

@ -7,8 +7,7 @@ import { ExtensionLoader } from "./extension-loader";
import updateExtensionsStateInjectable from "./update-extensions-state/update-extensions-state.injectable"; import updateExtensionsStateInjectable from "./update-extensions-state/update-extensions-state.injectable";
import createExtensionInstanceInjectable from "./create-extension-instance/create-extension-instance.injectable"; import createExtensionInstanceInjectable from "./create-extension-instance/create-extension-instance.injectable";
import { extensionRegistratorInjectionToken } from "./extension-registrator-injection-token"; import { extensionRegistratorInjectionToken } from "./extension-registrator-injection-token";
import extensionInstallationCounterInjectable import extensionInstallationCounterInjectable from "./extension-installation-counter.injectable";
from "./extension-installation-counter.injectable";
const extensionLoaderInjectable = getInjectable({ const extensionLoaderInjectable = getInjectable({
id: "extension-loader", id: "extension-loader",

View File

@ -13,16 +13,11 @@ import { ExtensionsStore } from "../../../extensions/extensions-store/extensions
import type { LensProtocolRouterMain } from "../lens-protocol-router-main/lens-protocol-router-main"; import type { LensProtocolRouterMain } from "../lens-protocol-router-main/lens-protocol-router-main";
import mockFs from "mock-fs"; import mockFs from "mock-fs";
import { getDiForUnitTesting } from "../../getDiForUnitTesting"; import { getDiForUnitTesting } from "../../getDiForUnitTesting";
import extensionLoaderInjectable import extensionLoaderInjectable from "../../../extensions/extension-loader/extension-loader.injectable";
from "../../../extensions/extension-loader/extension-loader.injectable"; import lensProtocolRouterMainInjectable from "../lens-protocol-router-main/lens-protocol-router-main.injectable";
import lensProtocolRouterMainInjectable import extensionsStoreInjectable from "../../../extensions/extensions-store/extensions-store.injectable";
from "../lens-protocol-router-main/lens-protocol-router-main.injectable"; import getConfigurationFileModelInjectable from "../../../common/get-configuration-file-model/get-configuration-file-model.injectable";
import extensionsStoreInjectable import appVersionInjectable from "../../../common/get-configuration-file-model/app-version/app-version.injectable";
from "../../../extensions/extensions-store/extensions-store.injectable";
import getConfigurationFileModelInjectable
from "../../../common/get-configuration-file-model/get-configuration-file-model.injectable";
import appVersionInjectable
from "../../../common/get-configuration-file-model/app-version/app-version.injectable";
jest.mock("../../../common/ipc"); jest.mock("../../../common/ipc");

View File

@ -8,8 +8,7 @@ import fse from "fs-extra";
import type { ClusterModel } from "../../common/cluster-types"; import type { ClusterModel } from "../../common/cluster-types";
import type { MigrationDeclaration } from "../helpers"; import type { MigrationDeclaration } from "../helpers";
import { getLegacyGlobalDiForExtensionApi } from "../../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; import { getLegacyGlobalDiForExtensionApi } from "../../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
import directoryForUserDataInjectable import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
from "../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
interface Pre500WorkspaceStoreModel { interface Pre500WorkspaceStoreModel {
workspaces: { workspaces: {

View File

@ -13,7 +13,6 @@ import { observer } from "mobx-react";
import path from "path"; import path from "path";
import React from "react"; import React from "react";
import * as uuid from "uuid"; import * as uuid from "uuid";
import { appEventBus } from "../../../common/app-event-bus/event-bus"; import { appEventBus } from "../../../common/app-event-bus/event-bus";
import { loadConfigFromString, splitConfig } from "../../../common/kube-helpers"; import { loadConfigFromString, splitConfig } from "../../../common/kube-helpers";
import { docsUrl } from "../../../common/vars"; import { docsUrl } from "../../../common/vars";
@ -24,9 +23,7 @@ import { SettingLayout } from "../layout/setting-layout";
import { MonacoEditor } from "../monaco-editor"; import { MonacoEditor } from "../monaco-editor";
import { withInjectables } from "@ogre-tools/injectable-react"; import { withInjectables } from "@ogre-tools/injectable-react";
import getCustomKubeConfigDirectoryInjectable from "../../../common/app-paths/get-custom-kube-config-directory/get-custom-kube-config-directory.injectable"; import getCustomKubeConfigDirectoryInjectable from "../../../common/app-paths/get-custom-kube-config-directory/get-custom-kube-config-directory.injectable";
import navigateToCatalogInjectable, { import navigateToCatalogInjectable, { NavigateToCatalog } from "../../../common/front-end-routing/routes/catalog/navigate-to-catalog.injectable";
NavigateToCatalog,
} from "../../../common/front-end-routing/routes/catalog/navigate-to-catalog.injectable";
interface Option { interface Option {
config: KubeConfig; config: KubeConfig;

View File

@ -15,19 +15,15 @@ import type { CatalogEntityStore } from "./catalog-entity-store/catalog-entity.s
import { getDiForUnitTesting } from "../../getDiForUnitTesting"; import { getDiForUnitTesting } from "../../getDiForUnitTesting";
import type { DiContainer } from "@ogre-tools/injectable"; import type { DiContainer } from "@ogre-tools/injectable";
import catalogEntityStoreInjectable from "./catalog-entity-store/catalog-entity-store.injectable"; import catalogEntityStoreInjectable from "./catalog-entity-store/catalog-entity-store.injectable";
import catalogEntityRegistryInjectable import catalogEntityRegistryInjectable from "../../api/catalog-entity-registry/catalog-entity-registry.injectable";
from "../../api/catalog-entity-registry/catalog-entity-registry.injectable";
import type { DiRender } from "../test-utils/renderFor"; import type { DiRender } from "../test-utils/renderFor";
import { renderFor } from "../test-utils/renderFor"; import { renderFor } from "../test-utils/renderFor";
import { ThemeStore } from "../../theme.store"; import { ThemeStore } from "../../theme.store";
import { UserStore } from "../../../common/user-store"; import { UserStore } from "../../../common/user-store";
import mockFs from "mock-fs"; import mockFs from "mock-fs";
import directoryForUserDataInjectable import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable"; import getConfigurationFileModelInjectable from "../../../common/get-configuration-file-model/get-configuration-file-model.injectable";
import getConfigurationFileModelInjectable import appVersionInjectable from "../../../common/get-configuration-file-model/app-version/app-version.injectable";
from "../../../common/get-configuration-file-model/get-configuration-file-model.injectable";
import appVersionInjectable
from "../../../common/get-configuration-file-model/app-version/app-version.injectable";
import type { AppEvent } from "../../../common/app-event-bus/event-bus"; import type { AppEvent } from "../../../common/app-event-bus/event-bus";
import appEventBusInjectable from "../../../common/app-event-bus/app-event-bus.injectable"; import appEventBusInjectable from "../../../common/app-event-bus/app-event-bus.injectable";

View File

@ -8,16 +8,7 @@ import styles from "./catalog.module.scss";
import React from "react"; import React from "react";
import { disposeOnUnmount, observer } from "mobx-react"; import { disposeOnUnmount, observer } from "mobx-react";
import { ItemListLayout } from "../item-object-list"; import { ItemListLayout } from "../item-object-list";
import { import { action, computed, IComputedValue, makeObservable, observable, reaction, runInAction, when } from "mobx";
action,
computed,
IComputedValue,
makeObservable,
observable,
reaction,
runInAction,
when,
} from "mobx";
import type { CatalogEntityStore } from "./catalog-entity-store/catalog-entity.store"; import type { CatalogEntityStore } from "./catalog-entity-store/catalog-entity.store";
import { navigate } from "../../navigation"; import { navigate } from "../../navigation";
import { MenuItem, MenuActions } from "../menu"; import { MenuItem, MenuActions } from "../menu";
@ -43,9 +34,7 @@ import getCategoryColumnsInjectable from "./get-category-columns.injectable";
import type { RegisteredCustomCategoryViewDecl } from "./custom-views.injectable"; import type { RegisteredCustomCategoryViewDecl } from "./custom-views.injectable";
import customCategoryViewsInjectable from "./custom-views.injectable"; import customCategoryViewsInjectable from "./custom-views.injectable";
import type { CustomCategoryViewComponents } from "./custom-views"; import type { CustomCategoryViewComponents } from "./custom-views";
import navigateToCatalogInjectable, { import navigateToCatalogInjectable, { NavigateToCatalog } from "../../../common/front-end-routing/routes/catalog/navigate-to-catalog.injectable";
NavigateToCatalog,
} from "../../../common/front-end-routing/routes/catalog/navigate-to-catalog.injectable";
import catalogRouteParametersInjectable from "./catalog-route-parameters.injectable"; import catalogRouteParametersInjectable from "./catalog-route-parameters.injectable";
import { browseCatalogTab } from "./catalog-browse-tab"; import { browseCatalogTab } from "./catalog-browse-tab";
import type { AppEvent } from "../../../common/app-event-bus/event-bus"; import type { AppEvent } from "../../../common/app-event-bus/event-bus";

View File

@ -56,11 +56,7 @@ class NonInjectedEntitySettings extends React.Component<Dependencies> {
get menuItems() { get menuItems() {
if (!this.entity) return []; if (!this.entity) return [];
return EntitySettingRegistry.getInstance().getItemsForKind( return EntitySettingRegistry.getInstance().getItemsForKind(this.entity.kind, this.entity.apiVersion, this.entity.metadata.source);
this.entity.kind,
this.entity.apiVersion,
this.entity.metadata.source,
);
} }
get activeSetting() { get activeSetting() {
@ -74,9 +70,7 @@ class NonInjectedEntitySettings extends React.Component<Dependencies> {
}; };
renderNavigation() { renderNavigation() {
const groups = Object.entries( const groups = Object.entries(groupBy(this.menuItems, (item) => item.group || "Extensions"));
groupBy(this.menuItems, (item) => item.group || "Extensions"),
);
groups.sort((a, b) => { groups.sort((a, b) => {
if (a[0] === "Settings") return -1; if (a[0] === "Settings") return -1;
@ -90,21 +84,16 @@ class NonInjectedEntitySettings extends React.Component<Dependencies> {
<div className="flex items-center pb-8"> <div className="flex items-center pb-8">
<Avatar <Avatar
title={this.entity.getName()} title={this.entity.getName()}
colorHash={`${this.entity.getName()}-${ colorHash={`${this.entity.getName()}-${this.entity.metadata.source}`}
this.entity.metadata.source
}`}
src={this.entity.spec.icon?.src} src={this.entity.spec.icon?.src}
className={styles.settingsAvatar} className={styles.settingsAvatar}
size={40} size={40}
/> />
<div className={styles.entityName}>{this.entity.getName()}</div> <div className={styles.entityName}>
{this.entity.getName()}
</div> </div>
<Tabs </div>
className="flex column" <Tabs className="flex column" scrollable={false} onChange={this.onTabChange} value={this.activeTab}>
scrollable={false}
onChange={this.onTabChange}
value={this.activeTab}
>
{ groups.map((group, groupIndex) => ( { groups.map((group, groupIndex) => (
<React.Fragment key={`group-${groupIndex}`}> <React.Fragment key={`group-${groupIndex}`}>
<hr/> <hr/>
@ -134,20 +123,20 @@ class NonInjectedEntitySettings extends React.Component<Dependencies> {
const { activeSetting } = this; const { activeSetting } = this;
return ( return (
<SettingLayout navigation={this.renderNavigation()} contentGaps={false}> <SettingLayout
{activeSetting && ( navigation={this.renderNavigation()}
contentGaps={false}
>
{
activeSetting && (
<section> <section>
<h2 data-testid={`${activeSetting.id}-header`}> <h2 data-testid={`${activeSetting.id}-header`}>{activeSetting.title}</h2>
{activeSetting.title}
</h2>
<section> <section>
<activeSetting.components.View <activeSetting.components.View entity={this.entity} key={activeSetting.title} />
entity={this.entity}
key={activeSetting.title}
/>
</section> </section>
</section> </section>
)} )
}
</SettingLayout> </SettingLayout>
); );
} }

View File

@ -14,7 +14,6 @@ import { PortForwardDetails } from "./port-forward-details";
import { withInjectables } from "@ogre-tools/injectable-react"; import { withInjectables } from "@ogre-tools/injectable-react";
import portForwardStoreInjectable from "../../port-forward/port-forward-store/port-forward-store.injectable"; import portForwardStoreInjectable from "../../port-forward/port-forward-store/port-forward-store.injectable";
import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout"; import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
import { computed, IComputedValue, makeObservable } from "mobx"; import { computed, IComputedValue, makeObservable } from "mobx";
import portForwardsRouteParametersInjectable from "./port-forwards-route-parameters.injectable"; import portForwardsRouteParametersInjectable from "./port-forwards-route-parameters.injectable";
import navigateToPortForwardsInjectable, { NavigateToPortForwards } from "../../../common/front-end-routing/routes/cluster/network/port-forwards/navigate-to-port-forwards.injectable"; import navigateToPortForwardsInjectable, { NavigateToPortForwards } from "../../../common/front-end-routing/routes/cluster/network/port-forwards/navigate-to-port-forwards.injectable";

View File

@ -18,8 +18,7 @@ import { IComputedValue, reaction } from "mobx";
import currentRouteComponentInjectable from "../../routes/current-route-component.injectable"; import currentRouteComponentInjectable from "../../routes/current-route-component.injectable";
import { setEntityOnRouteMatch } from "../../api/helpers/general-active-sync"; import { setEntityOnRouteMatch } from "../../api/helpers/general-active-sync";
import { navigation } from "../../navigation"; import { navigation } from "../../navigation";
import welcomeRouteInjectable import welcomeRouteInjectable from "../../../common/front-end-routing/routes/welcome/welcome-route.injectable";
from "../../../common/front-end-routing/routes/welcome/welcome-route.injectable";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../../../common/utils/buildUrl";
interface Dependencies { interface Dependencies {

View File

@ -14,9 +14,7 @@ import { ClusterStore } from "../../../common/cluster-store/cluster-store";
import { catalogEntityRegistry } from "../../api/catalog-entity-registry"; import { catalogEntityRegistry } from "../../api/catalog-entity-registry";
import { requestClusterActivation } from "../../ipc"; import { requestClusterActivation } from "../../ipc";
import { withInjectables } from "@ogre-tools/injectable-react"; import { withInjectables } from "@ogre-tools/injectable-react";
import navigateToCatalogInjectable, { import navigateToCatalogInjectable, { NavigateToCatalog } from "../../../common/front-end-routing/routes/catalog/navigate-to-catalog.injectable";
NavigateToCatalog,
} from "../../../common/front-end-routing/routes/catalog/navigate-to-catalog.injectable";
import clusterViewRouteParametersInjectable from "./cluster-view-route-parameters.injectable"; import clusterViewRouteParametersInjectable from "./cluster-view-route-parameters.injectable";
interface Dependencies { interface Dependencies {

View File

@ -6,11 +6,7 @@
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { Select } from "../select"; import { Select } from "../select";
import hotbarStoreInjectable, { HotbarStore } from "../../../common/hotbar-store.injectable";
import hotbarStoreInjectable, {
HotbarStore,
} from "../../../common/hotbar-store.injectable";
import type { CommandOverlay } from "../command-palette"; import type { CommandOverlay } from "../command-palette";
import { HotbarAddCommand } from "./hotbar-add-command"; import { HotbarAddCommand } from "./hotbar-add-command";
import { HotbarRemoveCommand } from "./hotbar-remove-command"; import { HotbarRemoveCommand } from "./hotbar-remove-command";

View File

@ -24,13 +24,9 @@ import clusterFrameContextInjectable from "../../cluster-frame-context/cluster-f
import kubeWatchApiInjectable from "../../kube-watch-api/kube-watch-api.injectable"; import kubeWatchApiInjectable from "../../kube-watch-api/kube-watch-api.injectable";
import type { KubeWatchSubscribeStoreOptions } from "../../kube-watch-api/kube-watch-api"; import type { KubeWatchSubscribeStoreOptions } from "../../kube-watch-api/kube-watch-api";
type ItemListLayoutPropsWithoutGetItems<K extends KubeObject> = Omit< type ItemListLayoutPropsWithoutGetItems<K extends KubeObject> = Omit<ItemListLayoutProps<K>, "getItems">;
ItemListLayoutProps<K>,
"getItems"
>;
export interface KubeObjectListLayoutProps<K extends KubeObject> export interface KubeObjectListLayoutProps<K extends KubeObject> extends ItemListLayoutPropsWithoutGetItems<K> {
extends ItemListLayoutPropsWithoutGetItems<K> {
items?: K[]; items?: K[];
getItems?: () => K[]; getItems?: () => K[];
store: KubeObjectStore<K>; store: KubeObjectStore<K>;
@ -45,10 +41,7 @@ const defaultProps: Partial<KubeObjectListLayoutProps<KubeObject>> = {
interface Dependencies { interface Dependencies {
clusterFrameContext: ClusterFrameContext; clusterFrameContext: ClusterFrameContext;
subscribeToStores: ( subscribeToStores: (stores: KubeObjectStore<KubeObject>[], options: KubeWatchSubscribeStoreOptions) => Disposer;
stores: KubeObjectStore<KubeObject>[],
options: KubeWatchSubscribeStoreOptions
) => Disposer;
} }
@observer @observer
@ -70,9 +63,7 @@ class NonInjectedKubeObjectListLayout<K extends KubeObject> extends React.Compon
const { store, dependentStores = [], subscribeStores } = this.props; const { store, dependentStores = [], subscribeStores } = this.props;
const stores = Array.from(new Set([store, ...dependentStores])); const stores = Array.from(new Set([store, ...dependentStores]));
const reactions: Disposer[] = [ const reactions: Disposer[] = [
reaction( reaction(() => this.props.clusterFrameContext.contextNamespaces.slice(), () => {
() => this.props.clusterFrameContext.contextNamespaces.slice(),
() => {
// clear load errors // clear load errors
this.loadErrors.length = 0; this.loadErrors.length = 0;
}), }),
@ -111,10 +102,8 @@ class NonInjectedKubeObjectListLayout<K extends KubeObject> extends React.Compon
} }
render() { render() {
const { className, customizeHeader, store, items, ...layoutProps } = const { className, customizeHeader, store, items, ...layoutProps } = this.props;
this.props; const placeholderString = ResourceNames[ResourceKindMap[store.api.kind]] || store.api.kind;
const placeholderString =
ResourceNames[ResourceKindMap[store.api.kind]] || store.api.kind;
return ( return (
<ItemListLayout <ItemListLayout
@ -152,10 +141,7 @@ class NonInjectedKubeObjectListLayout<K extends KubeObject> extends React.Compon
} }
} }
const InjectedKubeObjectListLayout = withInjectables< const InjectedKubeObjectListLayout = withInjectables<Dependencies, KubeObjectListLayoutProps<KubeObject>>(NonInjectedKubeObjectListLayout, {
Dependencies,
KubeObjectListLayoutProps<KubeObject>
>(NonInjectedKubeObjectListLayout, {
getProps: (di, props) => ({ getProps: (di, props) => ({
clusterFrameContext: di.inject(clusterFrameContextInjectable), clusterFrameContext: di.inject(clusterFrameContextInjectable),
subscribeToStores: di.inject(kubeWatchApiInjectable).subscribeStores, subscribeToStores: di.inject(kubeWatchApiInjectable).subscribeStores,

View File

@ -11,15 +11,12 @@ import { getDiForUnitTesting } from "../../getDiForUnitTesting";
import type { DiContainer } from "@ogre-tools/injectable"; import type { DiContainer } from "@ogre-tools/injectable";
import { DiRender, renderFor } from "../test-utils/renderFor"; import { DiRender, renderFor } from "../test-utils/renderFor";
import mockFs from "mock-fs"; import mockFs from "mock-fs";
import directoryForUserDataInjectable import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
import rendererExtensionsInjectable from "../../../extensions/renderer-extensions.injectable"; import rendererExtensionsInjectable from "../../../extensions/renderer-extensions.injectable";
import { computed } from "mobx"; import { computed } from "mobx";
import type { LensRendererExtension } from "../../../extensions/lens-renderer-extension"; import type { LensRendererExtension } from "../../../extensions/lens-renderer-extension";
import getConfigurationFileModelInjectable import getConfigurationFileModelInjectable from "../../../common/get-configuration-file-model/get-configuration-file-model.injectable";
from "../../../common/get-configuration-file-model/get-configuration-file-model.injectable"; import appVersionInjectable from "../../../common/get-configuration-file-model/app-version/app-version.injectable";
import appVersionInjectable
from "../../../common/get-configuration-file-model/app-version/app-version.injectable";
jest.mock("electron", () => ({ jest.mock("electron", () => ({
ipcRenderer: { ipcRenderer: {

View File

@ -30,9 +30,7 @@ export interface SelectOption<T = any> {
label?: React.ReactNode; label?: React.ReactNode;
} }
export interface SelectProps<T = any> export interface SelectProps<T = any> extends ReactSelectProps<T, boolean>, CreatableProps<T, boolean> {
extends ReactSelectProps<T, boolean>,
CreatableProps<T, boolean> {
id: string; id: string;
value?: T; value?: T;
themeName?: "dark" | "light" | "outlined" | "lens"; themeName?: "dark" | "light" | "outlined" | "lens";

View File

@ -25,6 +25,7 @@ import { StorageClassDetails } from "../components/+storage-classes";
import { PersistentVolumeClaimDetails } from "../components/+storage-volume-claims"; import { PersistentVolumeClaimDetails } from "../components/+storage-volume-claims";
import { PersistentVolumeDetails } from "../components/+storage-volumes"; import { PersistentVolumeDetails } from "../components/+storage-volumes";
import { ClusterRoleDetails } from "../components/+user-management/+cluster-roles"; import { ClusterRoleDetails } from "../components/+user-management/+cluster-roles";
import { ClusterRoleBindingDetails } from "../components/+user-management/+cluster-role-bindings";
import { RoleDetails } from "../components/+user-management/+roles"; import { RoleDetails } from "../components/+user-management/+roles";
import { RoleBindingDetails } from "../components/+user-management/+role-bindings"; import { RoleBindingDetails } from "../components/+user-management/+role-bindings";
import { ServiceAccountsDetails } from "../components/+user-management/+service-accounts"; import { ServiceAccountsDetails } from "../components/+user-management/+service-accounts";
@ -36,7 +37,6 @@ import { PodDetails } from "../components/+workloads-pods";
import { ReplicaSetDetails } from "../components/+workloads-replicasets"; import { ReplicaSetDetails } from "../components/+workloads-replicasets";
import { StatefulSetDetails } from "../components/+workloads-statefulsets"; import { StatefulSetDetails } from "../components/+workloads-statefulsets";
import type { KubeObjectDetailsProps } from "../components/kube-object-details"; import type { KubeObjectDetailsProps } from "../components/kube-object-details";
import { ClusterRoleBindingDetails } from "../components/+user-management/+cluster-role-bindings";
export function initKubeObjectDetailRegistry() { export function initKubeObjectDetailRegistry() {
KubeObjectDetailRegistry.getInstance() KubeObjectDetailRegistry.getInstance()

View File

@ -7,8 +7,8 @@ import { getDiForUnitTesting as getMainDi } from "../main/getDiForUnitTesting";
import { overrideIpcBridge } from "./override-ipc-bridge"; import { overrideIpcBridge } from "./override-ipc-bridge";
export const getDisForUnitTesting = ({ doGeneralOverrides } = { doGeneralOverrides: false }) => { export const getDisForUnitTesting = ({ doGeneralOverrides } = { doGeneralOverrides: false }) => {
const mainDi = getMainDi({ doGeneralOverrides });
const rendererDi = getRendererDi({ doGeneralOverrides }); const rendererDi = getRendererDi({ doGeneralOverrides });
const mainDi = getMainDi({ doGeneralOverrides });
overrideIpcBridge({ rendererDi, mainDi }); overrideIpcBridge({ rendererDi, mainDi });