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

Render only secret name on pod details without access to secrets (#2244)

* Render only secret name on pod details without access to secrets

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>

* Preserving layout when amount of secrets passed

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Refactor secrets to observable map

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>

Co-authored-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
Lauri Nevala 2021-03-03 15:40:19 +02:00 committed by GitHub
parent 4931f681e4
commit 25a7403f3c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 10 deletions

View File

@ -1,7 +1,7 @@
.PodDetailsSecrets { .PodDetailsSecrets {
a { > * {
display: block; display: block;
margin-bottom: $margin; margin-bottom: var(--margin);
&:last-child { &:last-child {
margin-bottom: 0; margin-bottom: 0;

View File

@ -13,33 +13,49 @@ interface Props {
@observer @observer
export class PodDetailsSecrets extends Component<Props> { export class PodDetailsSecrets extends Component<Props> {
@observable secrets: Secret[] = []; @observable secrets: Map<string, Secret> = observable.map<string, Secret>();
@disposeOnUnmount @disposeOnUnmount
secretsLoader = autorun(async () => { secretsLoader = autorun(async () => {
const { pod } = this.props; const { pod } = this.props;
this.secrets = await Promise.all( const secrets = await Promise.all(
pod.getSecrets().map(secretName => secretsApi.get({ pod.getSecrets().map(secretName => secretsApi.get({
name: secretName, name: secretName,
namespace: pod.getNs(), namespace: pod.getNs(),
})) }))
); );
secrets.forEach(secret => secret && this.secrets.set(secret.getName(), secret));
}); });
render() { render() {
const { pod } = this.props;
return ( return (
<div className="PodDetailsSecrets"> <div className="PodDetailsSecrets">
{ {
this.secrets.map(secret => { pod.getSecrets().map(secretName => {
return ( const secret = this.secrets.get(secretName);
<Link key={secret.getId()} to={getDetailsUrl(secret.selfLink)}>
{secret.getName()} if (secret) {
</Link> return this.renderSecretLink(secret);
); } else {
return (
<span key={secretName}>{secretName}</span>
);
}
}) })
} }
</div> </div>
); );
} }
protected renderSecretLink(secret: Secret) {
return (
<Link key={secret.getId()} to={getDetailsUrl(secret.selfLink)}>
{secret.getName()}
</Link>
);
}
} }