diff --git a/src/components/BrowserCell/BrowserCell.react.js b/src/components/BrowserCell/BrowserCell.react.js index 74cbe7ca04..389ec915b4 100644 --- a/src/components/BrowserCell/BrowserCell.react.js +++ b/src/components/BrowserCell/BrowserCell.react.js @@ -71,7 +71,7 @@ export default class BrowserCell extends Component { ); let value = this.props.value; let dataValue = this.props.value.id || this.props.value.objectId; - if (defaultPointerKey !== 'objectId') { + if (defaultPointerKey !== 'objectId' && typeof this.props.value.get === 'function') { dataValue = this.props.value.get(defaultPointerKey); if (dataValue && typeof dataValue === 'object') { if (dataValue instanceof Date) { diff --git a/src/components/BrowserRow/BrowserRow.react.js b/src/components/BrowserRow/BrowserRow.react.js index e038d483e8..6ec416a906 100644 --- a/src/components/BrowserRow/BrowserRow.react.js +++ b/src/components/BrowserRow/BrowserRow.react.js @@ -67,13 +67,15 @@ export default class BrowserRow extends Component { return acc; }, requiredCols); // for dynamically changing required field on _User class - if ( - obj.className === '_User' && - (obj.get('username') !== undefined || obj.get('password') !== undefined) - ) { - requiredCols = ['username', 'password']; - } else if (obj.className === '_User' && obj.get('authData') !== undefined) { - requiredCols = ['authData']; + if (!isUnique) { + if ( + obj.className === '_User' && + (obj.get('username') !== undefined || obj.get('password') !== undefined) + ) { + requiredCols = ['username', 'password']; + } else if (obj.className === '_User' && obj.get('authData') !== undefined) { + requiredCols = ['authData']; + } } const highlightColor = '#eef4fb'; const stickyHighlightColor = '#d6e4f0'; diff --git a/src/lib/tests/BrowserRow.test.js b/src/lib/tests/BrowserRow.test.js index a75dca43b9..8874d19adf 100644 --- a/src/lib/tests/BrowserRow.test.js +++ b/src/lib/tests/BrowserRow.test.js @@ -104,4 +104,29 @@ describe('BrowserRow', () => { expect(checkboxCell.props.style.background).toBe('#ffffff'); }); }); + + describe('Unique filter', () => { + beforeAll(() => { + global.localStorage = { + getItem: () => null, + setItem: () => {}, + removeItem: () => {}, + }; + }); + + it('does not crash rendering a unique _User pointer value', () => { + const rawUserPointer = { __type: 'Pointer', className: '_User', objectId: 'user1' }; + expect(() => + renderer.create( + + ) + ).not.toThrow(); + }); + }); });