diff --git a/src/renderer/components/dock/logs/__test__/log-resource-selector.test.tsx b/src/renderer/components/dock/logs/__test__/log-resource-selector.test.tsx index 2f7ff9e01d..b5923b98a0 100644 --- a/src/renderer/components/dock/logs/__test__/log-resource-selector.test.tsx +++ b/src/renderer/components/dock/logs/__test__/log-resource-selector.test.tsx @@ -20,6 +20,7 @@ import callForLogsInjectable from "../call-for-logs.injectable"; import { LogTabViewModel, LogTabViewModelDependencies } from "../logs-view-model"; import type { TabId } from "../../dock/store"; import userEvent from "@testing-library/user-event"; +import { SearchStore } from "../../../../search-store/search-store"; jest.mock("electron", () => ({ app: { @@ -50,7 +51,7 @@ function mockLogTabViewModel(tabId: TabId, deps: Partial new SearchStore(), + searchStore: new SearchStore(), ...deps, }); } diff --git a/src/renderer/components/dock/logs/logs-view-model.injectable.ts b/src/renderer/components/dock/logs/logs-view-model.injectable.ts index cc7012d7b1..d26a34d583 100644 --- a/src/renderer/components/dock/logs/logs-view-model.injectable.ts +++ b/src/renderer/components/dock/logs/logs-view-model.injectable.ts @@ -14,9 +14,9 @@ import loadLogsInjectable from "./load-logs.injectable"; import setLogTabDataInjectable from "./set-log-tab-data.injectable"; import stopLoadingLogsInjectable from "./stop-loading-logs.injectable"; import { podsStore } from "../../+workloads-pods/pods.store"; -import createSearchStoreInjectable from "../../../search-store/create-search-store.injectable"; import renameTabInjectable from "../dock/rename-tab.injectable"; import areLogsPresentInjectable from "./are-logs-present.injectable"; +import searchStoreInjectable from "../../../search-store/search-store.injectable"; export interface InstantiateArgs { tabId: TabId; @@ -36,7 +36,7 @@ const logsViewModelInjectable = getInjectable({ areLogsPresent: di.inject(areLogsPresentInjectable), getPodById: id => podsStore.getById(id), getPodsByOwnerId: id => podsStore.getPodsByOwnerId(id), - createSearchStore: di.inject(createSearchStoreInjectable), + searchStore: di.inject(searchStoreInjectable), }), lifecycle: lifecycleEnum.transient, }); diff --git a/src/renderer/components/dock/logs/logs-view-model.ts b/src/renderer/components/dock/logs/logs-view-model.ts index fcc42ba113..73ed0c770f 100644 --- a/src/renderer/components/dock/logs/logs-view-model.ts +++ b/src/renderer/components/dock/logs/logs-view-model.ts @@ -21,12 +21,16 @@ export interface LogTabViewModelDependencies { getPodById: (id: string) => Pod | undefined; getPodsByOwnerId: (id: string) => Pod[]; areLogsPresent: (tabId: TabId) => boolean; - createSearchStore: () => SearchStore; + searchStore: SearchStore; } export class LogTabViewModel { constructor(protected readonly tabId: TabId, private readonly dependencies: LogTabViewModelDependencies) {} + get searchStore() { + return this.dependencies.searchStore; + } + readonly isLoading = computed(() => this.dependencies.areLogsPresent(this.tabId)); readonly logs = computed(() => this.dependencies.getLogs(this.tabId)); readonly logsWithoutTimestamps = computed(() => this.dependencies.getLogsWithoutTimestamps(this.tabId)); @@ -54,7 +58,6 @@ export class LogTabViewModel { return this.dependencies.getPodById(data.selectedPodId); }); - readonly searchStore = this.dependencies.createSearchStore(); updateLogTabData = (partialData: Partial) => { this.dependencies.setLogTabData(this.tabId, { ...this.logTabData.get(), ...partialData }); diff --git a/src/renderer/search-store/create-search-store.injectable.ts b/src/renderer/search-store/search-store.injectable.ts similarity index 60% rename from src/renderer/search-store/create-search-store.injectable.ts rename to src/renderer/search-store/search-store.injectable.ts index 088a837f8c..3d5d08f484 100644 --- a/src/renderer/search-store/create-search-store.injectable.ts +++ b/src/renderer/search-store/search-store.injectable.ts @@ -5,9 +5,9 @@ import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable"; import { SearchStore } from "./search-store"; -const createSearchStoreInjectable = getInjectable({ - instantiate: () => () => new SearchStore(), - lifecycle: lifecycleEnum.singleton, +const searchStoreInjectable = getInjectable({ + instantiate: () => new SearchStore(), + lifecycle: lifecycleEnum.transient, }); -export default createSearchStoreInjectable; +export default searchStoreInjectable; diff --git a/src/renderer/search-store/search-store.test.ts b/src/renderer/search-store/search-store.test.ts index fa8623274c..f3fc9a4289 100644 --- a/src/renderer/search-store/search-store.test.ts +++ b/src/renderer/search-store/search-store.test.ts @@ -9,6 +9,7 @@ import { stdout, stderr } from "process"; import { getDiForUnitTesting } from "../getDiForUnitTesting"; import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable"; +import searchStoreInjectable from "./search-store.injectable"; jest.mock("electron", () => ({ app: { @@ -34,7 +35,7 @@ describe("search store tests", () => { await di.runSetups(); - searchStore = new SearchStore(); + searchStore = di.inject(searchStoreInjectable); }); it("does nothing with empty search query", () => {