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

Inline implementation of injectable for being simple enough

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
Janne Savolainen 2022-07-27 09:07:18 +03:00
parent 4212b409dd
commit 871bf18727
No known key found for this signature in database
GPG Key ID: 8C6CFB2FFFE8F68A

View File

@ -6,56 +6,52 @@ import { getInjectable } from "@ogre-tools/injectable";
import editResourceTabStoreInjectable from "./store.injectable"; import editResourceTabStoreInjectable from "./store.injectable";
import dockStoreInjectable from "../dock/store.injectable"; import dockStoreInjectable from "../dock/store.injectable";
import type { KubeObject } from "../../../../common/k8s-api/kube-object"; import type { KubeObject } from "../../../../common/k8s-api/kube-object";
import type { DockStore, DockTabCreateSpecific, TabId } from "../dock/store"; import type { DockTabCreateSpecific, TabId } from "../dock/store";
import { TabKind } from "../dock/store"; import { TabKind } from "../dock/store";
import type { EditResourceTabStore } from "./store";
import { runInAction } from "mobx"; import { runInAction } from "mobx";
import getRandomIdForEditResourceTabInjectable from "./get-random-id-for-edit-resource-tab.injectable"; import getRandomIdForEditResourceTabInjectable from "./get-random-id-for-edit-resource-tab.injectable";
interface Dependencies {
dockStore: DockStore;
editResourceStore: EditResourceTabStore;
getRandomId: () => string;
}
const createEditResourceTab = ({ dockStore, editResourceStore, getRandomId }: Dependencies) => (object: KubeObject, tabParams: DockTabCreateSpecific = {}): TabId => {
// use existing tab if already opened
const tabId = editResourceStore.getTabIdByResource(object);
if (tabId) {
dockStore.open();
dockStore.selectTab(tabId);
return tabId;
}
return runInAction(() => {
const tab = dockStore.createTab(
{
id: getRandomId(),
title: `${object.kind}: ${object.getName()}`,
...tabParams,
kind: TabKind.EDIT_RESOURCE,
},
false,
);
editResourceStore.setData(tab.id, {
resource: object.selfLink,
});
return tab.id;
});
};
const createEditResourceTabInjectable = getInjectable({ const createEditResourceTabInjectable = getInjectable({
id: "create-edit-resource-tab", id: "create-edit-resource-tab",
instantiate: (di) => createEditResourceTab({ instantiate: (di) => {
dockStore: di.inject(dockStoreInjectable), const dockStore = di.inject(dockStoreInjectable);
editResourceStore: di.inject(editResourceTabStoreInjectable), const editResourceStore = di.inject(editResourceTabStoreInjectable);
getRandomId: di.inject(getRandomIdForEditResourceTabInjectable), const getRandomId = di.inject(getRandomIdForEditResourceTabInjectable);
}),
return (
object: KubeObject,
tabParams: DockTabCreateSpecific = {},
): TabId => {
// use existing tab if already opened
const tabId = editResourceStore.getTabIdByResource(object);
if (tabId) {
dockStore.open();
dockStore.selectTab(tabId);
return tabId;
}
return runInAction(() => {
const tab = dockStore.createTab(
{
id: getRandomId(),
title: `${object.kind}: ${object.getName()}`,
...tabParams,
kind: TabKind.EDIT_RESOURCE,
},
false,
);
editResourceStore.setData(tab.id, {
resource: object.selfLink,
});
return tab.id;
});
};
},
}); });
export default createEditResourceTabInjectable; export default createEditResourceTabInjectable;