Fix to collection selection window not loading successfully.

In collection dropdown component, moved the return statement that returned the collection list outside the condition that checks if it's the final page
This commit is contained in:
Santiago Tettamanti
2021-12-16 10:32:04 -03:00
parent b8016d7fae
commit ff6cde76df
2 changed files with 15 additions and 15 deletions

View File

@@ -11,8 +11,8 @@
aria-labelledby="dropdownMenuButton"
(scroll)="onScroll($event)"
infiniteScroll
[infiniteScrollDistance]="5"
[infiniteScrollThrottle]="300"
[infiniteScrollDistance]="1.5"
[infiniteScrollThrottle]="0"
[infiniteScrollUpDistance]="1.5"
[fromRoot]="true"
[scrollWindow]="false"
@@ -21,7 +21,7 @@
<button class="dropdown-item disabled" *ngIf="searchListCollection?.length == 0 && !(isLoading | async)">
{{'submission.sections.general.no-collection' | translate}}
</button>
<ng-container *ngIf="searchListCollection?.length > 0 && !(isLoading | async)">
<ng-container *ngIf="searchListCollection?.length > 0">
<button *ngFor="let listItem of searchListCollection"
class="dropdown-item collection-item"
title="{{ listItem.collection.name }}"

View File

@@ -223,20 +223,20 @@ export class CollectionDropdownComponent implements OnInit, OnDestroy {
switchMap((collectionsRD: RemoteData<PaginatedList<Collection>>) => {
this.searchComplete.emit();
if (collectionsRD.hasSucceeded && collectionsRD.payload.totalElements > 0) {
if ( (this.searchListCollection.length + findOptions.elementsPerPage) >= collectionsRD.payload.totalElements ) {
if (this.searchListCollection.length >= collectionsRD.payload.totalElements) {
this.hasNextPage = false;
this.emitSelectionEvents(collectionsRD);
return observableFrom(collectionsRD.payload.page).pipe(
mergeMap((collection: Collection) => collection.parentCommunity.pipe(
getFirstSucceededRemoteDataPayload(),
map((community: Community) => ({
communities: [{ id: community.id, name: community.name }],
collection: { id: collection.id, uuid: collection.id, name: collection.name }
})
))),
reduce((acc: any, value: any) => [...acc, value], []),
);
}
this.emitSelectionEvents(collectionsRD);
return observableFrom(collectionsRD.payload.page).pipe(
mergeMap((collection: Collection) => collection.parentCommunity.pipe(
getFirstSucceededRemoteDataPayload(),
map((community: Community) => ({
communities: [{ id: community.id, name: community.name }],
collection: { id: collection.id, uuid: collection.id, name: collection.name }
})
))),
reduce((acc: any, value: any) => [...acc, value], []),
);
} else {
this.hasNextPage = false;
return observableOf([]);