From 72979e7ca4f12b2d41c34d791e33ad08bcb54dd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Goral?= Date: Fri, 30 May 2025 12:13:50 +0200 Subject: [PATCH 1/2] added chaining operator --- src/components/ControlPlane/FluxList.tsx | 14 ++++++++------ .../ControlPlane/MCPHealthPopoverButton.tsx | 4 ++-- src/components/ControlPlane/ManagedResources.tsx | 4 ++-- src/components/ControlPlane/Providers.tsx | 4 ++-- src/lib/api/types/crossplane/listProviders.ts | 4 ++-- src/lib/api/types/flux/listGitRepo.ts | 2 +- 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/components/ControlPlane/FluxList.tsx b/src/components/ControlPlane/FluxList.tsx index 51ddee98..772fa47f 100644 --- a/src/components/ControlPlane/FluxList.tsx +++ b/src/components/ControlPlane/FluxList.tsx @@ -153,10 +153,11 @@ export default function FluxList() { return { name: item.metadata.name, isReady: - item.status.conditions.find((x) => x.type === 'Ready')?.status === + item?.status?.conditions?.find((x) => x.type === 'Ready')?.status === 'True', - statusUpdateTime: item.status.conditions.find((x) => x.type === 'Ready') - ?.lastTransitionTime, + statusUpdateTime: item.status?.conditions?.find( + (x) => x.type === 'Ready', + )?.lastTransitionTime, revision: shortenCommitHash(item.status.artifact?.revision ?? '-'), created: timeAgo.format(new Date(item.metadata.creationTimestamp)), item: item, @@ -168,10 +169,11 @@ export default function FluxList() { return { name: item.metadata.name, isReady: - item.status.conditions.find((x) => x.type === 'Ready')?.status === + item.status?.conditions?.find((x) => x.type === 'Ready')?.status === 'True', - statusUpdateTime: item.status.conditions.find((x) => x.type === 'Ready') - ?.lastTransitionTime, + statusUpdateTime: item.status?.conditions?.find( + (x) => x.type === 'Ready', + )?.lastTransitionTime, created: timeAgo.format(new Date(item.metadata.creationTimestamp)), item: item, }; diff --git a/src/components/ControlPlane/MCPHealthPopoverButton.tsx b/src/components/ControlPlane/MCPHealthPopoverButton.tsx index a44751ce..4d53b984 100644 --- a/src/components/ControlPlane/MCPHealthPopoverButton.tsx +++ b/src/components/ControlPlane/MCPHealthPopoverButton.tsx @@ -63,7 +63,7 @@ export default function MCPHealthPopoverButton({ const statusDetails = mcpStatus?.conditions ? `${t('MCPHealthPopoverButton.statusDetailsLabel')}: ${mcpStatus.status}\n\n${t('MCPHealthPopoverButton.detailsLabel')}\n` + - mcpStatus.conditions + mcpStatus?.conditions .map((condition) => { let text = `- ${condition.type}: ${condition.status}\n`; if (condition.reason) @@ -160,7 +160,7 @@ function StatusTable({ scaleWidthMode="Smart" columns={tableColumns} data={ - status?.conditions.sort((a, b) => { + status?.conditions?.sort((a, b) => { return a.type < b.type ? -1 : 1; }) ?? [] } diff --git a/src/components/ControlPlane/ManagedResources.tsx b/src/components/ControlPlane/ManagedResources.tsx index 3c37df01..3ad92b71 100644 --- a/src/components/ControlPlane/ManagedResources.tsx +++ b/src/components/ControlPlane/ManagedResources.tsx @@ -106,10 +106,10 @@ export function ManagedResources() { ?.filter((managedResource) => managedResource.items) .flatMap((managedResource) => managedResource.items?.map((item) => { - const conditionSynced = item.status.conditions?.find( + const conditionSynced = item.status?.conditions?.find( (condition) => condition.type === 'Synced', ); - const conditionReady = item.status.conditions?.find( + const conditionReady = item.status?.conditions?.find( (condition) => condition.type === 'Ready', ); diff --git a/src/components/ControlPlane/Providers.tsx b/src/components/ControlPlane/Providers.tsx index 4e154471..5242c9f0 100644 --- a/src/components/ControlPlane/Providers.tsx +++ b/src/components/ControlPlane/Providers.tsx @@ -106,10 +106,10 @@ export function Providers() { const rows: ProvidersRow[] = providers?.items?.map((item) => { - const installed = item.status.conditions?.find( + const installed = item.status?.conditions?.find( (condition) => condition.type === 'Installed', ); - const healthy = item.status.conditions?.find( + const healthy = item.status?.conditions?.find( (condition) => condition.type === 'Healthy', ); return { diff --git a/src/lib/api/types/crossplane/listProviders.ts b/src/lib/api/types/crossplane/listProviders.ts index e6ccb201..6d4702ab 100644 --- a/src/lib/api/types/crossplane/listProviders.ts +++ b/src/lib/api/types/crossplane/listProviders.ts @@ -11,8 +11,8 @@ export type ProvidersListResponse = { name: string; creationTimestamp: string; }; - status: { - conditions: [ + status?: { + conditions?: [ { type: 'Healthy' | 'Installed' | unknown; status: 'True' | 'False'; diff --git a/src/lib/api/types/flux/listGitRepo.ts b/src/lib/api/types/flux/listGitRepo.ts index 3c2c6f87..882b6ac0 100644 --- a/src/lib/api/types/flux/listGitRepo.ts +++ b/src/lib/api/types/flux/listGitRepo.ts @@ -15,7 +15,7 @@ export type GitReposResponse = { artifact: { revision: string; }; - conditions: [ + conditions?: [ { status: string; type: string; From 3714985b25da4b2900b9e33f634659dcfbddb2eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Goral?= Date: Fri, 30 May 2025 12:42:48 +0200 Subject: [PATCH 2/2] Update listManagedResources.ts --- src/lib/api/types/crossplane/listManagedResources.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/api/types/crossplane/listManagedResources.ts b/src/lib/api/types/crossplane/listManagedResources.ts index c3675394..f3e1e1ec 100644 --- a/src/lib/api/types/crossplane/listManagedResources.ts +++ b/src/lib/api/types/crossplane/listManagedResources.ts @@ -9,8 +9,8 @@ export type ManagedResourcesResponse = [ name: string; creationTimestamp: string; }; - status: { - conditions: [ + status?: { + conditions?: [ { type: 'Ready' | 'Synced' | unknown; status: 'True' | 'False';