@@ -215,8 +215,7 @@ export function TaxonomyTree(props: ITaxonomyTreeProps): React.ReactElement<ITax
215
215
if ( props . termSetInfo . childrenCount > 0 ) {
216
216
props . onLoadMoreData ( Guid . parse ( props . termSetInfo . id ) , props . anchorTermInfo ? Guid . parse ( props . anchorTermInfo . id ) : Guid . empty , '' , props . hideDeprecatedTerms )
217
217
. then ( ( loadedTerms ) => {
218
- const nonExistingTerms = loadedTerms . value . filter ( ( term ) => props . terms . every ( ( prevTerm ) => prevTerm . id !== term . id ) ) ;
219
- const grps : IGroup [ ] = nonExistingTerms . map ( term => {
218
+ const grps : IGroup [ ] = loadedTerms . value . map ( term => {
220
219
let termNames = term . labels . filter ( ( termLabel ) => ( termLabel . languageTag === props . languageTag && termLabel . isDefault === true ) ) ;
221
220
if ( termNames . length === 0 ) {
222
221
termNames = term . labels . filter ( ( termLabel ) => ( termLabel . languageTag === props . termStoreInfo . defaultLanguageTag && termLabel . isDefault === true ) ) ;
@@ -237,6 +236,7 @@ export function TaxonomyTree(props: ITaxonomyTreeProps): React.ReactElement<ITax
237
236
return g ;
238
237
} ) ;
239
238
props . setTerms ( ( prevTerms ) => {
239
+ const nonExistingTerms = loadedTerms . value . filter ( ( newTerm ) => prevTerms . every ( ( prevTerm ) => prevTerm . id !== newTerm . id ) ) ;
240
240
return [ ...prevTerms , ...nonExistingTerms ] ;
241
241
} ) ;
242
242
rootGroup . children = grps ;
@@ -276,8 +276,7 @@ export function TaxonomyTree(props: ITaxonomyTreeProps): React.ReactElement<ITax
276
276
277
277
props . onLoadMoreData ( Guid . parse ( props . termSetInfo . id ) , Guid . parse ( group . key ) , '' , props . hideDeprecatedTerms )
278
278
. then ( ( loadedTerms ) => {
279
- const nonExistingTerms = loadedTerms . value . filter ( ( term ) => props . terms . every ( ( prevTerm ) => prevTerm . id !== term . id ) ) ;
280
- const grps : IGroup [ ] = nonExistingTerms . map ( term => {
279
+ const grps : IGroup [ ] = loadedTerms . value . map ( term => {
281
280
let termNames = term . labels . filter ( ( termLabel ) => ( termLabel . languageTag === props . languageTag && termLabel . isDefault === true ) ) ;
282
281
if ( termNames . length === 0 ) {
283
282
termNames = term . labels . filter ( ( termLabel ) => ( termLabel . languageTag === props . termStoreInfo . defaultLanguageTag && termLabel . isDefault === true ) ) ;
@@ -299,10 +298,12 @@ export function TaxonomyTree(props: ITaxonomyTreeProps): React.ReactElement<ITax
299
298
} ) ;
300
299
301
300
props . setTerms ( ( prevTerms ) => {
301
+ const nonExistingTerms = loadedTerms . value . filter ( ( newTerm ) => prevTerms . every ( ( prevTerm ) => prevTerm . id !== newTerm . id ) ) ;
302
302
return [ ...prevTerms , ...nonExistingTerms ] ;
303
303
} ) ;
304
304
305
- group . children = grps ;
305
+ const nonExistingChildren = grps . filter ( ( grp ) => group . children ?. every ( ( child ) => child . key !== grp . key ) ) ;
306
+ group . children = nonExistingChildren ;
306
307
group . data . skiptoken = loadedTerms . skiptoken ;
307
308
group . hasMoreData = loadedTerms . skiptoken !== '' ;
308
309
setGroupsLoading ( ( prevGroupsLoading ) => prevGroupsLoading . filter ( ( value ) => value !== group . key ) ) ;
@@ -513,8 +514,7 @@ export function TaxonomyTree(props: ITaxonomyTreeProps): React.ReactElement<ITax
513
514
setGroupsLoading ( ( prevGroupsLoading ) => [ ...prevGroupsLoading , footerProps . group . key ] ) ;
514
515
props . onLoadMoreData ( Guid . parse ( props . termSetInfo . id ) , footerProps . group . key === props . termSetInfo . id ? Guid . empty : Guid . parse ( footerProps . group . key ) , footerProps . group . data . skiptoken , props . hideDeprecatedTerms )
515
516
. then ( ( loadedTerms ) => {
516
- const nonExistingTerms = loadedTerms . value . filter ( ( term ) => props . terms . every ( ( prevTerm ) => prevTerm . id !== term . id ) ) ;
517
- const grps : IGroup [ ] = nonExistingTerms . map ( term => {
517
+ const grps : IGroup [ ] = loadedTerms . value . map ( term => {
518
518
let termNames = term . labels . filter ( ( termLabel ) => ( termLabel . languageTag === props . languageTag && termLabel . isDefault === true ) ) ;
519
519
if ( termNames . length === 0 ) {
520
520
termNames = term . labels . filter ( ( termLabel ) => ( termLabel . languageTag === props . termStoreInfo . defaultLanguageTag && termLabel . isDefault === true ) ) ;
@@ -535,9 +535,11 @@ export function TaxonomyTree(props: ITaxonomyTreeProps): React.ReactElement<ITax
535
535
return g ;
536
536
} ) ;
537
537
props . setTerms ( ( prevTerms ) => {
538
+ const nonExistingTerms = loadedTerms . value . filter ( ( newTerm ) => prevTerms . every ( ( prevTerm ) => prevTerm . id !== newTerm . id ) ) ;
538
539
return [ ...prevTerms , ...nonExistingTerms ] ;
539
540
} ) ;
540
- footerProps . group . children = [ ...footerProps . group . children , ...grps ] ;
541
+ const nonExistingChildren = grps . filter ( ( grp ) => footerProps . group . children ?. every ( ( child ) => child . key !== grp . key ) ) ;
542
+ footerProps . group . children = [ ...footerProps . group . children , ...nonExistingChildren ] ;
541
543
footerProps . group . data . skiptoken = loadedTerms . skiptoken ;
542
544
footerProps . group . hasMoreData = loadedTerms . skiptoken !== '' ;
543
545
setGroupsLoading ( ( prevGroupsLoading ) => prevGroupsLoading . filter ( ( value ) => value !== footerProps . group . key ) ) ;
0 commit comments