diff --git a/frontend/src/metabase/entities/containers/EntityLink.jsx b/frontend/src/metabase/entities/containers/EntityLink.jsx index 4d4525b7e22ed33d045f459bc3c467078dfc8614..48b5b2408889e85c3f16fc006425186fc5e1a7cb 100644 --- a/frontend/src/metabase/entities/containers/EntityLink.jsx +++ b/frontend/src/metabase/entities/containers/EntityLink.jsx @@ -8,6 +8,8 @@ const EntityLink = ({ entityId, name = "name", LinkComponent = Link, + dispatchApiErrorEvent = true, + fallback = null, ...linkProps }) => ( <EntityObjectLoader @@ -15,6 +17,7 @@ const EntityLink = ({ entityId={entityId} properties={[name]} loadingAndErrorWrapper={false} + dispatchApiErrorEvent={dispatchApiErrorEvent} wrapped > {({ object }) => @@ -22,7 +25,9 @@ const EntityLink = ({ <LinkComponent {...linkProps} to={object.getUrl()}> <span>{object.getName()}</span> </LinkComponent> - ) : null + ) : ( + fallback + ) } </EntityObjectLoader> ); diff --git a/frontend/src/metabase/entities/containers/EntityObjectLoader.jsx b/frontend/src/metabase/entities/containers/EntityObjectLoader.jsx index dd8f2380f7973c02bd804bbcd8afdca75a609efc..4d5b44f84956870084a41486a129c29eb985241c 100644 --- a/frontend/src/metabase/entities/containers/EntityObjectLoader.jsx +++ b/frontend/src/metabase/entities/containers/EntityObjectLoader.jsx @@ -42,6 +42,7 @@ export default class EntityObjectLoader extends React.Component { loadingAndErrorWrapper: true, reload: false, wrapped: false, + dispatchApiErrorEvent: true, }; _getWrappedObject; @@ -61,11 +62,15 @@ export default class EntityObjectLoader extends React.Component { } UNSAFE_componentWillMount() { - const { entityId, fetch } = this.props; + const { entityId, fetch, dispatchApiErrorEvent } = this.props; if (entityId != null) { fetch( { id: entityId }, - { reload: this.props.reload, properties: this.props.properties }, + { + reload: this.props.reload, + properties: this.props.properties, + noEvent: !dispatchApiErrorEvent, + }, ); } } @@ -121,7 +126,11 @@ export default class EntityObjectLoader extends React.Component { reload = () => { return this.props.fetch( { id: this.props.entityId }, - { reload: true, properties: this.props.properties }, + { + reload: true, + properties: this.props.properties, + noEvent: !this.props.dispatchApiErrorEvent, + }, ); }; diff --git a/frontend/src/metabase/lib/revisions/components.jsx b/frontend/src/metabase/lib/revisions/components.jsx index 20c78cf0ec815761ab08937255c7545f44afe17b..6e45289a5d3f193c4ff9df697de8a3e1655ed770 100644 --- a/frontend/src/metabase/lib/revisions/components.jsx +++ b/frontend/src/metabase/lib/revisions/components.jsx @@ -16,6 +16,10 @@ export const EntityLink = styled(RawEntityLink)` } `; +EntityLink.defaultProps = { + dispatchApiErrorEvent: false, +}; + const revisionTitlePropTypes = { username: PropTypes.string.isRequired, message: PropTypes.node.isRequired, diff --git a/frontend/src/metabase/lib/revisions/revisions.js b/frontend/src/metabase/lib/revisions/revisions.js index d42f826a593a122feb53843dd1ae0f9c4a380fdf..29483260b619d340be1c62388d81fc2fa7cb7f64 100644 --- a/frontend/src/metabase/lib/revisions/revisions.js +++ b/frontend/src/metabase/lib/revisions/revisions.js @@ -71,6 +71,7 @@ export function getCollectionChangeDescription(prevCollectionId, collectionId) { key={key} entityId={collectionId || "root"} entityType="collections" + fallback={t`Unknown`} /> )}`, ];