From 1bf61b6870d70f2ffb006348787f6133a6d19eba Mon Sep 17 00:00:00 2001 From: Iku-turso Date: Mon, 21 Mar 2022 16:32:31 +0200 Subject: [PATCH] Prevent explicit side effect in component by using existing dependency instead Signed-off-by: Iku-turso --- .../+preferences/kubectl-binaries.tsx | 103 ++++++++++-------- 1 file changed, 57 insertions(+), 46 deletions(-) diff --git a/src/renderer/components/+preferences/kubectl-binaries.tsx b/src/renderer/components/+preferences/kubectl-binaries.tsx index 1b063e6ec0..cbd90588e8 100644 --- a/src/renderer/components/+preferences/kubectl-binaries.tsx +++ b/src/renderer/components/+preferences/kubectl-binaries.tsx @@ -14,21 +14,29 @@ import { packageMirrors } from "../../../common/user-store/preferences-helpers"; import directoryForBinariesInjectable from "../../../common/app-paths/directory-for-binaries/directory-for-binaries.injectable"; import { withInjectables } from "@ogre-tools/injectable-react"; import userStoreInjectable from "../../../common/user-store/user-store.injectable"; -import { kubectlBinaryPath } from "../../../common/vars"; +import directoryForKubectlBinariesInjectable from "../../../common/app-paths/directory-for-kubectl-binaries/directory-for-kubectl-binaries.injectable"; interface Dependencies { + defaultPathForGeneralBinaries: string; defaultPathForKubectlBinaries: string; userStore: UserStore; } -const NonInjectedKubectlBinaries: React.FC = observer(({ defaultPathForKubectlBinaries, userStore }) => { - const [downloadPath, setDownloadPath] = useState(userStore.downloadBinariesPath || ""); - const [binariesPath, setBinariesPath] = useState(userStore.kubectlBinariesPath || ""); - const pathValidator = downloadPath ? InputValidators.isPath : undefined; - const downloadMirrorOptions: SelectOption[] = Array.from( - packageMirrors.entries(), - ([value, { label, platforms }]) => ({ value, label, platforms }), - ); +const NonInjectedKubectlBinaries: React.FC = observer( + ({ defaultPathForGeneralBinaries, defaultPathForKubectlBinaries, userStore }) => { + const [downloadPath, setDownloadPath] = useState( + userStore.downloadBinariesPath || "", + ); + + const [binariesPath, setBinariesPath] = useState( + userStore.kubectlBinariesPath || "", + ); + + const pathValidator = downloadPath ? InputValidators.isPath : undefined; + const downloadMirrorOptions: SelectOption[] = Array.from( + packageMirrors.entries(), + ([value, { label, platforms }]) => ({ value, label, platforms }), + ); const save = () => { userStore.downloadBinariesPath = downloadPath; @@ -41,7 +49,7 @@ const NonInjectedKubectlBinaries: React.FC = observer(({ defaultPa userStore.downloadKubectlBinaries = !userStore.downloadKubectlBinaries} + onChange={() => userStore.downloadKubectlBinaries = !userStore.downloadKubectlBinaries} > Download kubectl binaries matching the Kubernetes cluster version @@ -63,41 +71,44 @@ const NonInjectedKubectlBinaries: React.FC = observer(({ defaultPa /> -
- - -
- The directory to download binaries into. -
-
+
+ + +
The directory to download binaries into.
+
-
- - -
- - ); -}); +
+ + +
+ + ); + }, +); -export const KubectlBinaries = withInjectables(NonInjectedKubectlBinaries, { - getProps: (di) => ({ - defaultPathForKubectlBinaries: di.inject(directoryForBinariesInjectable), - userStore: di.inject(userStoreInjectable), - }), -}); +export const KubectlBinaries = withInjectables( + NonInjectedKubectlBinaries, + { + getProps: (di) => ({ + defaultPathForGeneralBinaries: di.inject(directoryForBinariesInjectable), + defaultPathForKubectlBinaries: di.inject(directoryForKubectlBinariesInjectable), + userStore: di.inject(userStoreInjectable), + }), + }, +);