Forráskód Böngészése

handle empty obj condition metadata (#4193)

ianedwards 2 éve
szülő
commit
195517a085

+ 5 - 4
dashboard/src/main/home/compliance-dashboard/ActionBanner.tsx

@@ -27,17 +27,18 @@ export const ActionBanner: React.FC<ActionBannerProps> = ({
   } = useCompliance();
 
   const provisioningStatus = useMemo(() => {
-    if (!latestContractDB || latestContractDB.condition === "") {
+    if (latestContractDB?.condition === "") {
       return {
         state: "pending" as const,
-        message: latestContractDB?.condition_metadata?.message ?? "",
+        message: latestContractDB.condition_metadata?.message ?? "",
       };
     }
 
-    if (latestContractDB.condition === "SUCCESS") {
+    // show no banner if latest contract is success or if there is no latest contract
+    if (!latestContractDB || latestContractDB?.condition === "SUCCESS") {
       return {
         state: "success" as const,
-        message: latestContractDB.condition_metadata?.message ?? "",
+        message: latestContractDB?.condition_metadata?.message ?? "",
       };
     }
 

+ 7 - 1
dashboard/src/main/home/compliance-dashboard/types.ts

@@ -73,6 +73,12 @@ export const contractValidator = z.object({
         message: z.string().optional(),
       }),
     ])
-    .nullable(),
+    .nullable()
+    .or(
+      z.object({}).transform(() => ({
+        code: "SUCCESS",
+        message: "",
+      }))
+    ),
 });
 export type APIContract = z.infer<typeof contractValidator>;