Skip to content

Commit

Permalink
Merge pull request DSpace#2766 from amgciadev/fix-2765-b
Browse files Browse the repository at this point in the history
Fix missing Register DOI button if configuration enabled
  • Loading branch information
tdonohue authored Feb 7, 2024
2 parents e35fed1 + 68475d1 commit a800093
Showing 1 changed file with 18 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { fadeIn, fadeInOut } from '../../../shared/animations/fade';
import { Item } from '../../../core/shared/item.model';
import { ActivatedRoute } from '@angular/router';
import { ItemOperation } from '../item-operation/itemOperation.model';
import { concatMap, distinctUntilChanged, first, map, mergeMap, switchMap, toArray } from 'rxjs/operators';
import {concatMap, distinctUntilChanged, first, map, mergeMap, switchMap, toArray} from 'rxjs/operators';
import { BehaviorSubject, combineLatest, Observable, of, Subscription } from 'rxjs';
import { RemoteData } from '../../../core/data/remote-data';
import { getItemEditRoute, getItemPageRoute } from '../../item-page-routing-paths';
Expand Down Expand Up @@ -107,7 +107,19 @@ export class ItemStatusComponent implements OnInit {
// Observable for configuration determining whether the Register DOI feature is enabled
let registerConfigEnabled$: Observable<boolean> = this.configurationService.findByPropertyName('identifiers.item-status.register-doi').pipe(
getFirstCompletedRemoteData(),
map((enabledRD: RemoteData<ConfigurationProperty>) => enabledRD.hasSucceeded && enabledRD.payload.values.length > 0)
map((response: RemoteData<ConfigurationProperty>) => {
// Return true if a successful response with a 'true' value was retrieved, otherwise return false
if (response.hasSucceeded) {
const payload = response.payload;
if (payload.values.length > 0 && hasValue(payload.values[0])) {
return payload.values[0] === 'true';
} else {
return false;
}
} else {
return false;
}
})
);

/**
Expand All @@ -117,7 +129,7 @@ export class ItemStatusComponent implements OnInit {
* The value is supposed to be a href for the button
*/
const currentUrl = this.getCurrentUrl(item);
const inititalOperations: ItemOperation[] = [
const initialOperations: ItemOperation[] = [
new ItemOperation('authorizations', `${currentUrl}/authorizations`, FeatureID.CanManagePolicies, true),
new ItemOperation('mappedCollections', `${currentUrl}/mapper`, FeatureID.CanManageMappings, true),
item.isWithdrawn
Expand All @@ -130,7 +142,7 @@ export class ItemStatusComponent implements OnInit {
new ItemOperation('delete', `${currentUrl}/delete`, FeatureID.CanDelete, true)
];

this.operations$.next(inititalOperations);
this.operations$.next(initialOperations);

/**
* When the identifier data stream changes, determine whether the register DOI button should be shown or not.
Expand Down Expand Up @@ -170,12 +182,12 @@ export class ItemStatusComponent implements OnInit {
}),
// Switch map pushes the register DOI operation onto a copy of the base array then returns to the pipe
switchMap((showDoi: boolean) => {
const ops = [...inititalOperations];
const ops = [...initialOperations];
if (showDoi) {
const op = new ItemOperation('register-doi', `${currentUrl}/register-doi`, FeatureID.CanRegisterDOI, true);
ops.splice(ops.length - 1, 0, op); // Add item before last
}
return inititalOperations;
return ops;
}),
concatMap((op: ItemOperation) => {
if (hasValue(op.featureID)) {
Expand Down

0 comments on commit a800093

Please sign in to comment.