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:
parent
4212b409dd
commit
871bf18727
@ -6,56 +6,52 @@ import { getInjectable } from "@ogre-tools/injectable";
|
||||
import editResourceTabStoreInjectable from "./store.injectable";
|
||||
import dockStoreInjectable from "../dock/store.injectable";
|
||||
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 type { EditResourceTabStore } from "./store";
|
||||
import { runInAction } from "mobx";
|
||||
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({
|
||||
id: "create-edit-resource-tab",
|
||||
|
||||
instantiate: (di) => createEditResourceTab({
|
||||
dockStore: di.inject(dockStoreInjectable),
|
||||
editResourceStore: di.inject(editResourceTabStoreInjectable),
|
||||
getRandomId: di.inject(getRandomIdForEditResourceTabInjectable),
|
||||
}),
|
||||
instantiate: (di) => {
|
||||
const dockStore = di.inject(dockStoreInjectable);
|
||||
const editResourceStore = di.inject(editResourceTabStoreInjectable);
|
||||
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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user