mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Add defensive code around Cluster.broadcastConnectUpdate (#5297)
This commit is contained in:
parent
19c77eefaf
commit
d92233d58e
@ -504,7 +504,9 @@ export class Cluster implements ClusterModel, ClusterState {
|
||||
return ClusterStatus.AccessDenied;
|
||||
}
|
||||
|
||||
this.broadcastConnectUpdate(error.error || error.message, true);
|
||||
const message = String(error.error || error.message) || String(error);
|
||||
|
||||
this.broadcastConnectUpdate(message, true);
|
||||
|
||||
return ClusterStatus.Offline;
|
||||
}
|
||||
@ -521,7 +523,9 @@ export class Cluster implements ClusterModel, ClusterState {
|
||||
return ClusterStatus.AccessDenied;
|
||||
}
|
||||
|
||||
this.broadcastConnectUpdate(error.message, true);
|
||||
const message = String(error.error || error.message) || String(error);
|
||||
|
||||
this.broadcastConnectUpdate(message, true);
|
||||
|
||||
return ClusterStatus.Offline;
|
||||
}
|
||||
|
||||
@ -73,6 +73,14 @@ export function isString(val: unknown): val is string {
|
||||
return typeof val === "string";
|
||||
}
|
||||
|
||||
/**
|
||||
* checks if val is of type boolean
|
||||
* @param val the value to be checked
|
||||
*/
|
||||
export function isBoolean(val: unknown): val is boolean {
|
||||
return typeof val === "boolean";
|
||||
}
|
||||
|
||||
/**
|
||||
* checks if val is of type object and isn't null
|
||||
* @param val the value to be checked
|
||||
|
||||
@ -11,7 +11,7 @@ import React from "react";
|
||||
import { ipcRendererOn } from "../../../common/ipc";
|
||||
import type { Cluster } from "../../../common/cluster/cluster";
|
||||
import type { IClassName } from "../../utils";
|
||||
import { cssNames } from "../../utils";
|
||||
import { isBoolean, hasTypedProperty, isObject, isString, cssNames } from "../../utils";
|
||||
import { Button } from "../button";
|
||||
import { Icon } from "../icon";
|
||||
import { Spinner } from "../spinner";
|
||||
@ -55,8 +55,16 @@ class NonInjectedClusterStatus extends React.Component<ClusterStatusProps & Depe
|
||||
|
||||
componentDidMount() {
|
||||
disposeOnUnmount(this, [
|
||||
ipcRendererOn(`cluster:${this.cluster.id}:connection-update`, (evt, res: KubeAuthUpdate) => {
|
||||
this.authOutput.push(res);
|
||||
ipcRendererOn(`cluster:${this.cluster.id}:connection-update`, (evt, res: unknown) => {
|
||||
if (
|
||||
isObject(res)
|
||||
&& hasTypedProperty(res, "message", isString)
|
||||
&& hasTypedProperty(res, "isError", isBoolean)
|
||||
) {
|
||||
this.authOutput.push(res);
|
||||
} else {
|
||||
console.warn(`Got invalid connection update for ${this.cluster.id}`, { update: res });
|
||||
}
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user