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

Convert DirectoryForDownloads to LazyInitializableState

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-09-14 12:38:54 -04:00
parent f40aceebff
commit ce0c924c00
4 changed files with 36 additions and 39 deletions

View File

@ -0,0 +1,13 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { createLazyInitializableState } from "../initializable-state/create-lazy";
import { appPathsInjectionToken } from "./token";
const directoryForDownloadsInjectable = createLazyInitializableState({
id: "directory-for-downloads",
init: (di) => di.inject(appPathsInjectionToken).get().downloads,
});
export default directoryForDownloadsInjectable;

View File

@ -1,13 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { appPathsInjectionToken } from "../app-path-injection-token";
const directoryForDownloadsInjectable = getInjectable({
id: "directory-for-downloads",
instantiate: (di) => di.inject(appPathsInjectionToken).downloads,
});
export default directoryForDownloadsInjectable;

View File

@ -16,7 +16,7 @@ import type { DiRender } from "../../test-utils/renderFor";
import { renderFor } from "../../test-utils/renderFor"; import { renderFor } from "../../test-utils/renderFor";
import extensionDiscoveryInjectable from "../../../../extensions/extension-discovery/extension-discovery.injectable"; import extensionDiscoveryInjectable from "../../../../extensions/extension-discovery/extension-discovery.injectable";
import directoryForUserDataInjectable from "../../../../common/app-paths/directory-for-user-data.injectable"; import directoryForUserDataInjectable from "../../../../common/app-paths/directory-for-user-data.injectable";
import directoryForDownloadsInjectable from "../../../../common/app-paths/directory-for-downloads/directory-for-downloads.injectable"; import directoryForDownloadsInjectable from "../../../../common/app-paths/directory-for-downloads.injectable";
import assert from "assert"; import assert from "assert";
import type { InstallExtensionFromInput } from "../install-extension-from-input.injectable"; import type { InstallExtensionFromInput } from "../install-extension-from-input.injectable";
import installExtensionFromInputInjectable from "../install-extension-from-input.injectable"; import installExtensionFromInputInjectable from "../install-extension-from-input.injectable";
@ -46,7 +46,9 @@ describe("Extensions", () => {
di.override(directoryForUserDataInjectable, () => ({ di.override(directoryForUserDataInjectable, () => ({
get: () => "some-directory-for-user-data", get: () => "some-directory-for-user-data",
})); }));
di.override(directoryForDownloadsInjectable, () => "some-directory-for-downloads"); di.override(directoryForDownloadsInjectable, () => ({
get: () => "some-directory-for-downloads",
}));
render = renderFor(di); render = renderFor(di);

View File

@ -6,16 +6,18 @@ import { getInjectable } from "@ogre-tools/injectable";
import { requestOpenFilePickingDialog } from "../../ipc"; import { requestOpenFilePickingDialog } from "../../ipc";
import { supportedExtensionFormats } from "./supported-extension-formats"; import { supportedExtensionFormats } from "./supported-extension-formats";
import attemptInstallsInjectable from "./attempt-installs.injectable"; import attemptInstallsInjectable from "./attempt-installs.injectable";
import directoryForDownloadsInjectable from "../../../common/app-paths/directory-for-downloads/directory-for-downloads.injectable"; import directoryForDownloadsInjectable from "../../../common/app-paths/directory-for-downloads.injectable";
interface Dependencies { const installFromSelectFileDialogInjectable = getInjectable({
attemptInstalls: (filePaths: string[]) => Promise<void>; id: "install-from-select-file-dialog",
directoryForDownloads: string;
}
const installFromSelectFileDialog = ({ attemptInstalls, directoryForDownloads }: Dependencies) => async () => { instantiate: (di) => {
const attemptInstalls = di.inject(attemptInstallsInjectable);
const directoryForDownloads = di.inject(directoryForDownloadsInjectable);
return async () => {
const { canceled, filePaths } = await requestOpenFilePickingDialog({ const { canceled, filePaths } = await requestOpenFilePickingDialog({
defaultPath: directoryForDownloads, defaultPath: directoryForDownloads.get(),
properties: ["openFile", "multiSelections"], properties: ["openFile", "multiSelections"],
message: `Select extensions to install (formats: ${supportedExtensionFormats.join(", ")}), `, message: `Select extensions to install (formats: ${supportedExtensionFormats.join(", ")}), `,
buttonLabel: "Use configuration", buttonLabel: "Use configuration",
@ -26,14 +28,7 @@ const installFromSelectFileDialog = ({ attemptInstalls, directoryForDownloads }:
await attemptInstalls(filePaths); await attemptInstalls(filePaths);
} }
}; };
},
const installFromSelectFileDialogInjectable = getInjectable({
id: "install-from-select-file-dialog",
instantiate: (di) => installFromSelectFileDialog({
attemptInstalls: di.inject(attemptInstallsInjectable),
directoryForDownloads: di.inject(directoryForDownloadsInjectable),
}),
}); });
export default installFromSelectFileDialogInjectable; export default installFromSelectFileDialogInjectable;