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 extensionDiscoveryInjectable from "../../../../extensions/extension-discovery/extension-discovery.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 type { InstallExtensionFromInput } from "../install-extension-from-input.injectable";
|
||||
import installExtensionFromInputInjectable from "../install-extension-from-input.injectable";
|
||||
@ -46,7 +46,9 @@ describe("Extensions", () => {
|
||||
di.override(directoryForUserDataInjectable, () => ({
|
||||
get: () => "some-directory-for-user-data",
|
||||
}));
|
||||
di.override(directoryForDownloadsInjectable, () => "some-directory-for-downloads");
|
||||
di.override(directoryForDownloadsInjectable, () => ({
|
||||
get: () => "some-directory-for-downloads",
|
||||
}));
|
||||
|
||||
render = renderFor(di);
|
||||
|
||||
|
||||
@ -6,16 +6,18 @@ import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { requestOpenFilePickingDialog } from "../../ipc";
|
||||
import { supportedExtensionFormats } from "./supported-extension-formats";
|
||||
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 {
|
||||
attemptInstalls: (filePaths: string[]) => Promise<void>;
|
||||
directoryForDownloads: string;
|
||||
}
|
||||
const installFromSelectFileDialogInjectable = getInjectable({
|
||||
id: "install-from-select-file-dialog",
|
||||
|
||||
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({
|
||||
defaultPath: directoryForDownloads,
|
||||
defaultPath: directoryForDownloads.get(),
|
||||
properties: ["openFile", "multiSelections"],
|
||||
message: `Select extensions to install (formats: ${supportedExtensionFormats.join(", ")}), `,
|
||||
buttonLabel: "Use configuration",
|
||||
@ -26,14 +28,7 @@ const installFromSelectFileDialog = ({ attemptInstalls, directoryForDownloads }:
|
||||
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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user