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:
parent
f40aceebff
commit
ce0c924c00
13
src/common/app-paths/directory-for-downloads.injectable.ts
Normal file
13
src/common/app-paths/directory-for-downloads.injectable.ts
Normal 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;
|
||||||
@ -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;
|
|
||||||
@ -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);
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user