Fix object metadata section crash due to un escaped characters (#2928)

This commit is contained in:
Prakash Senthil Vel
2023-07-07 23:51:06 +05:30
committed by GitHub
parent b975871e9d
commit 420ed00f55
2 changed files with 18 additions and 8 deletions

View File

@@ -509,3 +509,12 @@ export const replaceUnicodeChar = (inputString: string): string => {
let unicodeChar = "\u202E";
return inputString.split(unicodeChar).join("<<3C>202e>");
};
// unescaped characters might throw error like '%'
export const safeDecodeURIComponent = (value: any) => {
try {
return decodeURIComponent(value);
} catch (err) {
return value;
}
};

View File

@@ -24,6 +24,7 @@ import {
detailsPanel,
spacingUtils,
} from "../../../../Common/FormComponents/common/styleLibrary";
import { safeDecodeURIComponent } from "../../../../../../common/utils";
interface IObjectMetadata {
metaData: any;
@@ -40,6 +41,12 @@ const styles = (theme: Theme) =>
...detailsPanel,
});
const itemRendererFn = (element: any) => {
return Array.isArray(element)
? element.map(safeDecodeURIComponent).join(", ")
: safeDecodeURIComponent(element);
};
const ObjectMetaData = ({
metaData,
classes,
@@ -51,10 +58,7 @@ const ObjectMetaData = ({
return (
<Fragment>
{metaKeys.map((element: string, index: number) => {
const renderItem = Array.isArray(metaData[element])
? metaData[element].map(decodeURIComponent).join(", ")
: decodeURIComponent(metaData[element]);
const renderItem = itemRendererFn(metaData[element]);
return (
<Box
className={classes.metadataLinear}
@@ -94,10 +98,7 @@ const ObjectMetaData = ({
<Table className={classes.table} aria-label="simple table">
<TableBody>
{metaKeys.map((element: string, index: number) => {
const renderItem = Array.isArray(metaData[element])
? metaData[element].map(decodeURIComponent).join(", ")
: decodeURIComponent(metaData[element]);
const renderItem = itemRendererFn(metaData[element]);
return (
<TableRow key={`tRow-${index.toString()}`}>
<TableCell