Merge branch '21815-trigrams-exclude-ids'
[arvados.git] / services / workbench2 / src / views-components / baner / banner.tsx
index 7e39186c09f8d852f7868ed26579dd0a4e619eba..71f590766713d78d7b7d5e747d0296f0a7a52601 100644 (file)
@@ -10,6 +10,7 @@ import bannerActions from "store/banner/banner-action";
 import { ArvadosTheme } from "common/custom-theme";
 import servicesProvider from "common/service-provider";
 import { Dispatch } from "redux";
+import { sanitizeHTML } from "common/html-sanitize";
 
 type CssRules = "dialogContent" | "dialogContentIframe";
 
@@ -60,6 +61,7 @@ export const BannerComponent = (props: BannerComponentProps) => {
 
     useEffect(() => {
         if (!!bannerUUID && bannerUUID !== "") {
+            try {
             servicesProvider
                 .getServices()
                 .collectionService.files(bannerUUID)
@@ -81,7 +83,10 @@ export const BannerComponent = (props: BannerComponentProps) => {
                                 localStorage.setItem(BANNER_LOCAL_STORAGE_KEY, JSON.stringify(bannerFileData));
                             });
                     }
-                });
+                })
+            } catch (e) {
+                console.error("Failed to load banner", e);
+            }
         }
     }, [bannerUUID, keepWebInlineServiceUrl, openBanner, isOpen]);
 
@@ -92,7 +97,7 @@ export const BannerComponent = (props: BannerComponentProps) => {
         >
             <div data-cy="confirmation-dialog">
                 <DialogContent className={props.classes.dialogContent}>
-                    <div dangerouslySetInnerHTML={{ __html: bannerContents }}></div>
+                    <div dangerouslySetInnerHTML={{ __html: sanitizeHTML(bannerContents) }}></div>
                 </DialogContent>
                 <DialogActions style={{ margin: "0px 24px 24px" }}>
                     <Button