Fix object metadata section crash due to un escaped characters (#2928)
This commit is contained in:
committed by
GitHub
parent
b975871e9d
commit
420ed00f55
@@ -509,3 +509,12 @@ export const replaceUnicodeChar = (inputString: string): string => {
|
|||||||
let unicodeChar = "\u202E";
|
let unicodeChar = "\u202E";
|
||||||
return inputString.split(unicodeChar).join("<<3C>202e>");
|
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;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import {
|
|||||||
detailsPanel,
|
detailsPanel,
|
||||||
spacingUtils,
|
spacingUtils,
|
||||||
} from "../../../../Common/FormComponents/common/styleLibrary";
|
} from "../../../../Common/FormComponents/common/styleLibrary";
|
||||||
|
import { safeDecodeURIComponent } from "../../../../../../common/utils";
|
||||||
|
|
||||||
interface IObjectMetadata {
|
interface IObjectMetadata {
|
||||||
metaData: any;
|
metaData: any;
|
||||||
@@ -40,6 +41,12 @@ const styles = (theme: Theme) =>
|
|||||||
...detailsPanel,
|
...detailsPanel,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const itemRendererFn = (element: any) => {
|
||||||
|
return Array.isArray(element)
|
||||||
|
? element.map(safeDecodeURIComponent).join(", ")
|
||||||
|
: safeDecodeURIComponent(element);
|
||||||
|
};
|
||||||
|
|
||||||
const ObjectMetaData = ({
|
const ObjectMetaData = ({
|
||||||
metaData,
|
metaData,
|
||||||
classes,
|
classes,
|
||||||
@@ -51,10 +58,7 @@ const ObjectMetaData = ({
|
|||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
{metaKeys.map((element: string, index: number) => {
|
{metaKeys.map((element: string, index: number) => {
|
||||||
const renderItem = Array.isArray(metaData[element])
|
const renderItem = itemRendererFn(metaData[element]);
|
||||||
? metaData[element].map(decodeURIComponent).join(", ")
|
|
||||||
: decodeURIComponent(metaData[element]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box
|
<Box
|
||||||
className={classes.metadataLinear}
|
className={classes.metadataLinear}
|
||||||
@@ -94,10 +98,7 @@ const ObjectMetaData = ({
|
|||||||
<Table className={classes.table} aria-label="simple table">
|
<Table className={classes.table} aria-label="simple table">
|
||||||
<TableBody>
|
<TableBody>
|
||||||
{metaKeys.map((element: string, index: number) => {
|
{metaKeys.map((element: string, index: number) => {
|
||||||
const renderItem = Array.isArray(metaData[element])
|
const renderItem = itemRendererFn(metaData[element]);
|
||||||
? metaData[element].map(decodeURIComponent).join(", ")
|
|
||||||
: decodeURIComponent(metaData[element]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TableRow key={`tRow-${index.toString()}`}>
|
<TableRow key={`tRow-${index.toString()}`}>
|
||||||
<TableCell
|
<TableCell
|
||||||
|
|||||||
Reference in New Issue
Block a user