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