[CST-4499] Version history (WIP) - Cache issue fixed

This commit is contained in:
Davide Negretti
2021-09-17 12:19:18 +02:00
parent b1b2bd4562
commit 025e7f5c38
2 changed files with 13 additions and 10 deletions

View File

@@ -15,7 +15,7 @@ describe('DsoPageEditButtonComponent', () => {
let fixture: ComponentFixture<DsoPageVersionButtonComponent>;
let authorizationService: AuthorizationDataService;
let dso: DSpaceObject;
let dso: Item;
beforeEach(waitForAsync(() => {
dso = Object.assign(new Item(), {
@@ -40,7 +40,6 @@ describe('DsoPageEditButtonComponent', () => {
fixture = TestBed.createComponent(DsoPageVersionButtonComponent);
component = fixture.componentInstance;
component.dso = dso;
component.pageRoute = 'test';
fixture.detectChanges();
});

View File

@@ -44,8 +44,6 @@ import { ItemDataService } from '../../../core/data/item-data.service';
import { Router } from '@angular/router';
import { AuthorizationDataService } from '../../../core/data/feature-authorization/authorization-data.service';
import { FeatureID } from '../../../core/data/feature-authorization/feature-id';
import { createPaginatedList } from '../../testing/utils.test';
import { createSuccessfulRemoteDataObject } from '../../remote-data.utils';
@Component({
selector: 'ds-item-versions',
@@ -104,7 +102,7 @@ export class ItemVersionsComponent implements OnInit {
/**
* The version history's list of versions
*/
versionsRD$: BehaviorSubject<RemoteData<PaginatedList<Version>>> = new BehaviorSubject<RemoteData<PaginatedList<Version>>>(createSuccessfulRemoteDataObject(createPaginatedList()));
versionsRD$: BehaviorSubject<RemoteData<PaginatedList<Version>>> = new BehaviorSubject<RemoteData<PaginatedList<Version>>>(null);
/**
* Verify if the list of versions has at least one e-person to display
@@ -244,7 +242,7 @@ export class ItemVersionsComponent implements OnInit {
);
}
getVersionHistory$(version: Version): Observable<VersionHistory> {
getVersionHistoryFromVersion$(version: Version): Observable<VersionHistory> {
return this.versionHistoryService.getHistoryIdFromVersion$(version).pipe(
take(1),
switchMap((res) => this.versionHistoryService.findById(res)),
@@ -294,7 +292,7 @@ export class ItemVersionsComponent implements OnInit {
// pass item
of(item),
// get and return version history
this.getVersionHistory$(version).pipe(
this.getVersionHistoryFromVersion$(version).pipe(
// invalidate cache
tap((versionHistory) => {
this.versionHistoryService.invalidateVersionHistoryCache(versionHistory.id);
@@ -336,7 +334,7 @@ export class ItemVersionsComponent implements OnInit {
* Creates a new version starting from the specified one
* @param version the version from which a new one will be created
*/
createNewVersion(version) {
createNewVersion(version: Version) {
const successMessageKey = 'item.version.create.notification.success';
const failureMessageKey = 'item.version.create.notification.failure';
const versionNumber = version.version;
@@ -359,7 +357,13 @@ export class ItemVersionsComponent implements OnInit {
if (postResult.hasSucceeded) {
const newVersionNumber = postResult.payload.version;
this.notificationsService.success(null, this.translateService.get(successMessageKey, {version: newVersionNumber}));
this.getVersionHistory$(version);
console.log(version);
const versionHistory$ = this.versionHistoryService.getHistoryFromVersion$(version).pipe(
tap((res) => {
this.versionHistoryService.invalidateVersionHistoryCache(res.id);
}),
);
this.getVersionHistory(versionHistory$);
} else {
this.notificationsService.error(null, this.translateService.get(failureMessageKey));
}
@@ -401,7 +405,7 @@ export class ItemVersionsComponent implements OnInit {
switchMap(([versionHistory, options]: [VersionHistory, PaginationComponentOptions]) => {
return this.versionHistoryService.getVersions(versionHistory.id,
new PaginatedSearchOptions({pagination: Object.assign({}, options, {currentPage: options.currentPage})}),
true, true, followLink('item'), followLink('eperson'));
false, true, followLink('item'), followLink('eperson'));
}),
getFirstCompletedRemoteData(),
).subscribe((res) => {