mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
[CST-4499] Version history (WIP) - Cache issue fixed
This commit is contained in:
@@ -15,7 +15,7 @@ describe('DsoPageEditButtonComponent', () => {
|
|||||||
let fixture: ComponentFixture<DsoPageVersionButtonComponent>;
|
let fixture: ComponentFixture<DsoPageVersionButtonComponent>;
|
||||||
|
|
||||||
let authorizationService: AuthorizationDataService;
|
let authorizationService: AuthorizationDataService;
|
||||||
let dso: DSpaceObject;
|
let dso: Item;
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
beforeEach(waitForAsync(() => {
|
||||||
dso = Object.assign(new Item(), {
|
dso = Object.assign(new Item(), {
|
||||||
@@ -40,7 +40,6 @@ describe('DsoPageEditButtonComponent', () => {
|
|||||||
fixture = TestBed.createComponent(DsoPageVersionButtonComponent);
|
fixture = TestBed.createComponent(DsoPageVersionButtonComponent);
|
||||||
component = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
component.dso = dso;
|
component.dso = dso;
|
||||||
component.pageRoute = 'test';
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -44,8 +44,6 @@ import { ItemDataService } from '../../../core/data/item-data.service';
|
|||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { AuthorizationDataService } from '../../../core/data/feature-authorization/authorization-data.service';
|
import { AuthorizationDataService } from '../../../core/data/feature-authorization/authorization-data.service';
|
||||||
import { FeatureID } from '../../../core/data/feature-authorization/feature-id';
|
import { FeatureID } from '../../../core/data/feature-authorization/feature-id';
|
||||||
import { createPaginatedList } from '../../testing/utils.test';
|
|
||||||
import { createSuccessfulRemoteDataObject } from '../../remote-data.utils';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-item-versions',
|
selector: 'ds-item-versions',
|
||||||
@@ -104,7 +102,7 @@ export class ItemVersionsComponent implements OnInit {
|
|||||||
/**
|
/**
|
||||||
* The version history's list of versions
|
* 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
|
* 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(
|
return this.versionHistoryService.getHistoryIdFromVersion$(version).pipe(
|
||||||
take(1),
|
take(1),
|
||||||
switchMap((res) => this.versionHistoryService.findById(res)),
|
switchMap((res) => this.versionHistoryService.findById(res)),
|
||||||
@@ -294,7 +292,7 @@ export class ItemVersionsComponent implements OnInit {
|
|||||||
// pass item
|
// pass item
|
||||||
of(item),
|
of(item),
|
||||||
// get and return version history
|
// get and return version history
|
||||||
this.getVersionHistory$(version).pipe(
|
this.getVersionHistoryFromVersion$(version).pipe(
|
||||||
// invalidate cache
|
// invalidate cache
|
||||||
tap((versionHistory) => {
|
tap((versionHistory) => {
|
||||||
this.versionHistoryService.invalidateVersionHistoryCache(versionHistory.id);
|
this.versionHistoryService.invalidateVersionHistoryCache(versionHistory.id);
|
||||||
@@ -336,7 +334,7 @@ export class ItemVersionsComponent implements OnInit {
|
|||||||
* Creates a new version starting from the specified one
|
* Creates a new version starting from the specified one
|
||||||
* @param version the version from which a new one will be created
|
* @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 successMessageKey = 'item.version.create.notification.success';
|
||||||
const failureMessageKey = 'item.version.create.notification.failure';
|
const failureMessageKey = 'item.version.create.notification.failure';
|
||||||
const versionNumber = version.version;
|
const versionNumber = version.version;
|
||||||
@@ -359,7 +357,13 @@ export class ItemVersionsComponent implements OnInit {
|
|||||||
if (postResult.hasSucceeded) {
|
if (postResult.hasSucceeded) {
|
||||||
const newVersionNumber = postResult.payload.version;
|
const newVersionNumber = postResult.payload.version;
|
||||||
this.notificationsService.success(null, this.translateService.get(successMessageKey, {version: newVersionNumber}));
|
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 {
|
} else {
|
||||||
this.notificationsService.error(null, this.translateService.get(failureMessageKey));
|
this.notificationsService.error(null, this.translateService.get(failureMessageKey));
|
||||||
}
|
}
|
||||||
@@ -401,7 +405,7 @@ export class ItemVersionsComponent implements OnInit {
|
|||||||
switchMap(([versionHistory, options]: [VersionHistory, PaginationComponentOptions]) => {
|
switchMap(([versionHistory, options]: [VersionHistory, PaginationComponentOptions]) => {
|
||||||
return this.versionHistoryService.getVersions(versionHistory.id,
|
return this.versionHistoryService.getVersions(versionHistory.id,
|
||||||
new PaginatedSearchOptions({pagination: Object.assign({}, options, {currentPage: options.currentPage})}),
|
new PaginatedSearchOptions({pagination: Object.assign({}, options, {currentPage: options.currentPage})}),
|
||||||
true, true, followLink('item'), followLink('eperson'));
|
false, true, followLink('item'), followLink('eperson'));
|
||||||
}),
|
}),
|
||||||
getFirstCompletedRemoteData(),
|
getFirstCompletedRemoteData(),
|
||||||
).subscribe((res) => {
|
).subscribe((res) => {
|
||||||
|
Reference in New Issue
Block a user