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

Prevent explicit side effect in component by using existing dependency instead

Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
This commit is contained in:
Iku-turso 2022-03-21 16:32:31 +02:00 committed by Janne Savolainen
parent ec33125373
commit 1bf61b6870
No known key found for this signature in database
GPG Key ID: 8C6CFB2FFFE8F68A

View File

@ -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<Dependencies> = observer(({ defaultPathForKubectlBinaries, userStore }) => {
const [downloadPath, setDownloadPath] = useState(userStore.downloadBinariesPath || "");
const [binariesPath, setBinariesPath] = useState(userStore.kubectlBinariesPath || "");
const pathValidator = downloadPath ? InputValidators.isPath : undefined;
const downloadMirrorOptions: SelectOption<string>[] = Array.from(
packageMirrors.entries(),
([value, { label, platforms }]) => ({ value, label, platforms }),
);
const NonInjectedKubectlBinaries: React.FC<Dependencies> = 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<string>[] = Array.from(
packageMirrors.entries(),
([value, { label, platforms }]) => ({ value, label, platforms }),
);
const save = () => {
userStore.downloadBinariesPath = downloadPath;
@ -41,7 +49,7 @@ const NonInjectedKubectlBinaries: React.FC<Dependencies> = observer(({ defaultPa
<SubTitle title="Kubectl binary download" />
<Switch
checked={userStore.downloadKubectlBinaries}
onChange={() => userStore.downloadKubectlBinaries = !userStore.downloadKubectlBinaries}
onChange={() => userStore.downloadKubectlBinaries = !userStore.downloadKubectlBinaries}
>
Download kubectl binaries matching the Kubernetes cluster version
</Switch>
@ -63,41 +71,44 @@ const NonInjectedKubectlBinaries: React.FC<Dependencies> = observer(({ defaultPa
/>
</section>
<section>
<SubTitle title="Directory for binaries" />
<Input
theme="round-black"
value={downloadPath}
placeholder={defaultPathForKubectlBinaries}
validators={pathValidator}
onChange={setDownloadPath}
onBlur={save}
disabled={!userStore.downloadKubectlBinaries}
/>
<div className="hint">
The directory to download binaries into.
</div>
</section>
<section>
<SubTitle title="Directory for binaries" />
<Input
theme="round-black"
value={downloadPath}
placeholder={defaultPathForGeneralBinaries}
validators={pathValidator}
onChange={setDownloadPath}
onBlur={save}
disabled={!userStore.downloadKubectlBinaries}
/>
<div className="hint">The directory to download binaries into.</div>
</section>
<section>
<SubTitle title="Path to kubectl binary" />
<Input
theme="round-black"
placeholder={kubectlBinaryPath.get()}
value={binariesPath}
validators={pathValidator}
onChange={setBinariesPath}
onBlur={save}
disabled={userStore.downloadKubectlBinaries}
/>
</section>
</>
);
});
<section>
<SubTitle title="Path to kubectl binary" />
<Input
theme="round-black"
placeholder={defaultPathForKubectlBinaries}
value={binariesPath}
validators={pathValidator}
onChange={setBinariesPath}
onBlur={save}
disabled={userStore.downloadKubectlBinaries}
/>
</section>
</>
);
},
);
export const KubectlBinaries = withInjectables<Dependencies>(NonInjectedKubectlBinaries, {
getProps: (di) => ({
defaultPathForKubectlBinaries: di.inject(directoryForBinariesInjectable),
userStore: di.inject(userStoreInjectable),
}),
});
export const KubectlBinaries = withInjectables<Dependencies>(
NonInjectedKubectlBinaries,
{
getProps: (di) => ({
defaultPathForGeneralBinaries: di.inject(directoryForBinariesInjectable),
defaultPathForKubectlBinaries: di.inject(directoryForKubectlBinariesInjectable),
userStore: di.inject(userStoreInjectable),
}),
},
);