@@ -29,6 +29,12 @@ import {genEntityIconHTMLElement} from '../../../helpers/entity';
2929
3030const { Alert, Badge, Button, ButtonGroup, Table} = bootstrap ;
3131
32+ // Main entities have a BBID but some other indexed types
33+ // have an ID field instead (collections, editors, areas)
34+ function getId ( entity ) {
35+ return entity . bbid ?? entity . id ;
36+ }
37+
3238/**
3339 * Renders the document and displays the 'SearchResults' page.
3440 * @returns {ReactElement } a HTML document which displays the SearchResults.
@@ -89,8 +95,8 @@ class SearchResults extends React.Component {
8995 // eslint-disable-next-line react/no-access-state-in-setstate
9096 const oldSelected = this . state . selected ;
9197 let newSelected ;
92- if ( oldSelected . find ( selected => selected . bbid === entity . bbid ) ) {
93- newSelected = oldSelected . filter ( selected => selected . bbid !== entity . bbid ) ;
98+ if ( oldSelected . find ( selected => getId ( selected ) === getId ( entity ) ) ) {
99+ newSelected = oldSelected . filter ( selected => getId ( selected ) !== getId ( entity ) ) ;
94100 }
95101 else {
96102 newSelected = [ ...oldSelected , entity ] ;
@@ -148,6 +154,7 @@ class SearchResults extends React.Component {
148154 if ( ! result ) {
149155 return null ;
150156 }
157+ const id = getId ( result ) ;
151158 const name = result . defaultAlias ? result . defaultAlias . name :
152159 '(unnamed)' ;
153160
@@ -160,19 +167,19 @@ class SearchResults extends React.Component {
160167 const disambiguation = result . disambiguation ? < small > ({ result . disambiguation . comment } )</ small > : '' ;
161168 // No redirect link for Area entity results
162169 const link = result . type === 'Area' ?
163- `//musicbrainz.org/area/${ result . bbid } ` :
164- `/${ _kebabCase ( result . type ) } /${ result . bbid } ` ;
170+ `//musicbrainz.org/area/${ id } ` :
171+ `/${ _kebabCase ( result . type ) } /${ id } ` ;
165172
166173 /* eslint-disable react/jsx-no-bind */
167174 return (
168- < tr key = { result . bbid } >
175+ < tr key = { id } >
169176 {
170177 ! this . props . condensed &&
171178 < td >
172179 {
173180 this . props . user ?
174181 < input
175- checked = { this . state . selected . find ( selected => selected . bbid === result . bbid ) }
182+ checked = { this . state . selected . find ( selected => getId ( selected ) === id ) }
176183 className = "checkboxes"
177184 type = "checkbox"
178185 onChange = { ( ) => this . toggleRow ( result ) }
@@ -212,7 +219,7 @@ class SearchResults extends React.Component {
212219 this . props . user ?
213220 < div >
214221 < AddToCollectionModal
215- bbids = { this . state . selected . map ( selected => selected . bbid ) }
222+ bbids = { this . state . selected . map ( getId ) }
216223 closeModalAndShowMessage = { this . closeModalAndShowMessage }
217224 entityType = { this . state . selected [ 0 ] ?. type }
218225 handleCloseModal = { this . onCloseModal }
0 commit comments