Fix crash when finding CRD's preferred version (#4332)

This commit is contained in:
Sebastian Malton authored and GitHub committed 2021-11-15 11:16:37 -05:00
1 parent 4c83f5becf
commit e51ff5051f
4 files changed
+53 -9

No files matched your search

@@ -78,6 +78,17 @@ export class CrdResources extends React.Component<Props> {
sortingCallbacks[column.name] = item => jsonPath.value(item, parseJsonPath(column.jsonPath.slice(1)));
});
const version = crd.getPreferedVersion();
const loadFailedPrefix = <p>Failed to load {crd.getPluralName()}</p>;
const failedToLoadMessage = version.served
? loadFailedPrefix
: (
<>
{loadFailedPrefix}
<p>Prefered version ({crd.getGroup()}/{version.name}) is not served</p>
</>
);
return (
<KubeObjectListLayout
isConfigurable
@@ -129,6 +140,7 @@ export class CrdResources extends React.Component<Props> {
}),
crdInstance.getAge(),
]}
failedToLoadMessage={failedToLoadMessage}
/>
);
}
@@ -98,6 +98,13 @@ export interface ItemListLayoutProps<I extends ItemObject> {
customizeRemoveDialog?: (selectedItems: I[]) => Partial<ConfirmDialogParams>;
renderFooter?: (parent: ItemListLayout<I>) => React.ReactNode;
/**
* Message to display when a store failed to load
*
* @default "Failed to load items"
*/
failedToLoadMessage?: React.ReactNode;
filterCallbacks?: ItemsFilters<I>;
}
@@ -114,7 +121,8 @@ const defaultProps: Partial<ItemListLayoutProps<ItemObject>> = {
hasDetailsView: true,
onDetails: noop,
virtual: true,
customizeTableRowProps: () => ({} as TableRowProps),
customizeTableRowProps: () => ({}),
failedToLoadMessage: "Failed to load items",
};
@observer
@@ -322,7 +330,7 @@ export class ItemListLayout<I extends ItemObject> extends React.Component<ItemLi
renderNoItems() {
if (this.failedToLoad) {
return <NoItems>Failed to load items.</NoItems>;
return <NoItems>{this.props.failedToLoadMessage}</NoItems>;
}
if (!this.isReady) {