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

Remove observable.map in PodDetailsSecrets

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-03-24 09:43:34 -04:00
parent 6672987cd9
commit c2fdccd163

View File

@ -7,7 +7,7 @@ import "./pod-details-secrets.scss";
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import { autorun, observable } from "mobx"; import { reaction } from "mobx";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { Pod, Secret, secretsApi } from "../../../common/k8s-api/endpoints"; import { Pod, Secret, secretsApi } from "../../../common/k8s-api/endpoints";
import { getDetailsUrl } from "../kube-detail-params"; import { getDetailsUrl } from "../kube-detail-params";
@ -17,18 +17,27 @@ export interface PodDetailsSecretsProps {
} }
export const PodDetailsSecrets = observer(({ pod }: PodDetailsSecretsProps) => { export const PodDetailsSecrets = observer(({ pod }: PodDetailsSecretsProps) => {
const [secrets] = useState(observable.map<string, Secret>()); const [secrets, setSecrets] = useState(new Map<string, Secret>());
useEffect(() => autorun(async () => { useEffect(() => (
const podSecrets = await Promise.all( reaction(
pod.getSecrets().map(secretName => secretsApi.get({ () => pod.getSecrets(),
name: secretName, async (secretNames) => {
namespace: pod.getNs(), const results = await Promise.allSettled(
})), secretNames.map(secretName => secretsApi.get({
); name: secretName,
namespace: pod.getNs(),
})),
);
secrets.replace(podSecrets.filter(Boolean).map(secret => [secret.getName(), secret])); setSecrets(new Map(
}), []); results
.filter(result => result.status === "fulfilled" && result.value)
.map(result => (result as PromiseFulfilledResult<Secret>).value)
.map(secret => [secret.getName(), secret]),
));
})
), []);
const renderSecret = (name: string) => { const renderSecret = (name: string) => {
const secret = secrets.get(name); const secret = secrets.get(name);