Files
2024-02-15 17:01:50 +00:00

49 lines
1.1 KiB
TypeScript

import {Fragment, isValidElement} from 'react';
import {t} from 'sentry/locale';
import {Redaction} from './redaction';
type Props = {
value: React.ReactNode;
meta?: Record<any, any>;
};
// If you find yourself modifying this component to fix some tooltip bug,
// consider that `meta` is not properly passed into this component in the
// first place. It's much more likely that `withMeta` is buggy or improperly
// used than that this component has a bug.
export function ValueElement({value, meta}: Props) {
if (!!value && meta) {
return <Redaction>{value}</Redaction>;
}
if (meta?.err?.length) {
return (
<Redaction withoutBackground>
<i>{`<${t('invalid')}>`}</i>
</Redaction>
);
}
if (meta?.rem?.length) {
return (
<Redaction>
<i>{`<${t('redacted')}>`}</i>
</Redaction>
);
}
if (isValidElement(value)) {
return value;
}
return (
<Fragment>
{typeof value === 'object' || typeof value === 'boolean'
? JSON.stringify(value)
: value}
</Fragment>
);
}