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;
|
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;
|
return ClusterStatus.Offline;
|
||||||
}
|
}
|
||||||
@ -521,7 +523,9 @@ export class Cluster implements ClusterModel, ClusterState {
|
|||||||
return ClusterStatus.AccessDenied;
|
return ClusterStatus.AccessDenied;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.broadcastConnectUpdate(error.message, true);
|
const message = String(error.error || error.message) || String(error);
|
||||||
|
|
||||||
|
this.broadcastConnectUpdate(message, true);
|
||||||
|
|
||||||
return ClusterStatus.Offline;
|
return ClusterStatus.Offline;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,6 +73,14 @@ export function isString(val: unknown): val is string {
|
|||||||
return typeof val === "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
|
* checks if val is of type object and isn't null
|
||||||
* @param val the value to be checked
|
* @param val the value to be checked
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import React from "react";
|
|||||||
import { ipcRendererOn } from "../../../common/ipc";
|
import { ipcRendererOn } from "../../../common/ipc";
|
||||||
import type { Cluster } from "../../../common/cluster/cluster";
|
import type { Cluster } from "../../../common/cluster/cluster";
|
||||||
import type { IClassName } from "../../utils";
|
import type { IClassName } from "../../utils";
|
||||||
import { cssNames } from "../../utils";
|
import { isBoolean, hasTypedProperty, isObject, isString, cssNames } from "../../utils";
|
||||||
import { Button } from "../button";
|
import { Button } from "../button";
|
||||||
import { Icon } from "../icon";
|
import { Icon } from "../icon";
|
||||||
import { Spinner } from "../spinner";
|
import { Spinner } from "../spinner";
|
||||||
@ -55,8 +55,16 @@ class NonInjectedClusterStatus extends React.Component<ClusterStatusProps & Depe
|
|||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
disposeOnUnmount(this, [
|
disposeOnUnmount(this, [
|
||||||
ipcRendererOn(`cluster:${this.cluster.id}:connection-update`, (evt, res: KubeAuthUpdate) => {
|
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);
|
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