[TLC-380] Refactor to use new endpoints, better naming

This commit is contained in:
Kim Shepherd
2023-02-02 09:35:49 +13:00
parent e86f0d3d13
commit 0a69560a8c
5 changed files with 26 additions and 43 deletions

View File

@@ -16,18 +16,13 @@ import { Item } from '../shared/item.model';
import { IDENTIFIERS } from '../../shared/object-list/identifier-data/identifier-data.resource-type'; import { IDENTIFIERS } from '../../shared/object-list/identifier-data/identifier-data.resource-type';
import { IdentifierData } from '../../shared/object-list/identifier-data/identifier-data.model'; import { IdentifierData } from '../../shared/object-list/identifier-data/identifier-data.model';
import { getFirstCompletedRemoteData } from '../shared/operators'; import { getFirstCompletedRemoteData } from '../shared/operators';
import { find, map, switchMap } from 'rxjs/operators'; import { map, switchMap } from 'rxjs/operators';
import {ConfigurationProperty} from '../shared/configuration-property.model'; import {ConfigurationProperty} from '../shared/configuration-property.model';
import {ConfigurationDataService} from './configuration-data.service'; import {ConfigurationDataService} from './configuration-data.service';
import { HttpOptions } from '../dspace-rest/dspace-rest.service'; import { HttpOptions } from '../dspace-rest/dspace-rest.service';
import { hasValue } from '../../shared/empty.util';
import { PostRequest } from './request.models'; import { PostRequest } from './request.models';
import { GenericConstructor } from '../shared/generic-constructor';
import { ResponseParsingService } from './parsing.service';
import { StatusCodeOnlyResponseParsingService } from './status-code-only-response-parsing.service';
import { sendRequest } from '../shared/request.operators'; import { sendRequest } from '../shared/request.operators';
import { RestRequest } from './rest-request.model'; import { RestRequest } from './rest-request.model';
import { OrcidHistory } from '../orcid/model/orcid-history.model';
/** /**
* The service handling all REST requests to get item identifiers like handles and DOIs * The service handling all REST requests to get item identifiers like handles and DOIs
@@ -71,33 +66,20 @@ export class IdentifierDataService extends BaseDataService<IdentifierData> {
} }
public registerIdentifier(item: Item, type: string): Observable<RemoteData<any>> { public registerIdentifier(item: Item, type: string): Observable<RemoteData<any>> {
const options: HttpOptions = Object.create({});
let headers = new HttpHeaders();
headers = headers.append('Content-Type', 'text/uri-list');
options.headers = headers;
let params = new HttpParams();
params = params.append('type', 'doi');
options.params = params;
const requestId = this.requestService.generateRequestId(); const requestId = this.requestService.generateRequestId();
const hrefObs = this.getEndpoint(); return this.getEndpoint().pipe(
map((endpointURL: string) => {
hrefObs.pipe( const options: HttpOptions = Object.create({});
find((href: string) => hasValue(href)), let headers = new HttpHeaders();
map((href: string) => { headers = headers.append('Content-Type', 'text/uri-list');
options.headers = headers;
const request = new PostRequest(requestId, href, item._links.self.href, options); let params = new HttpParams();
Object.assign(request, { params = params.append('type', type);
getResponseParser(): GenericConstructor<ResponseParsingService> { options.params = params;
return StatusCodeOnlyResponseParsingService; return new PostRequest(requestId, endpointURL, item._links.self.href, options);
} }),
}); sendRequest(this.requestService),
return request; switchMap((request: RestRequest) => this.rdbService.buildFromRequestUUID(request.uuid) as Observable<RemoteData<any>>)
}) );
).subscribe((request) => {
this.requestService.send(request);
});
return this.rdbService.buildFromRequestUUID(requestId);
} }
} }

View File

@@ -5,4 +5,4 @@ export const ITEM_EDIT_PUBLIC_PATH = 'public';
export const ITEM_EDIT_DELETE_PATH = 'delete'; export const ITEM_EDIT_DELETE_PATH = 'delete';
export const ITEM_EDIT_MOVE_PATH = 'move'; export const ITEM_EDIT_MOVE_PATH = 'move';
export const ITEM_EDIT_AUTHORIZATIONS_PATH = 'authorizations'; export const ITEM_EDIT_AUTHORIZATIONS_PATH = 'authorizations';
export const ITEM_EDIT_REGISTER_DOI_PATH = 'registerdoi'; export const ITEM_EDIT_REGISTER_DOI_PATH = 'register-doi';

View File

@@ -7,7 +7,7 @@ import { RemoteData } from '../../../core/data/remote-data';
import { Item } from '../../../core/shared/item.model'; import { Item } from '../../../core/shared/item.model';
import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { NotificationsService } from '../../../shared/notifications/notifications.service';
import { ItemDataService } from '../../../core/data/item-data.service'; import { ItemDataService } from '../../../core/data/item-data.service';
import { getFirstCompletedRemoteData, getFirstSucceededRemoteData } from '../../../core/shared/operators'; import { getFirstSucceededRemoteData } from '../../../core/shared/operators';
import { first, map } from 'rxjs/operators'; import { first, map } from 'rxjs/operators';
import { hasValue } from '../../../shared/empty.util'; import { hasValue } from '../../../shared/empty.util';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
@@ -20,11 +20,11 @@ import { Identifier } from '../../../shared/object-list/identifier-data/identifi
templateUrl: './item-register-doi-component.html' templateUrl: './item-register-doi-component.html'
}) })
/** /**
* Component responsible for rendering the Item Registe DOI page * Component responsible for rendering the Item Register DOI page
*/ */
export class ItemRegisterDoiComponent extends AbstractSimpleItemActionComponent { export class ItemRegisterDoiComponent extends AbstractSimpleItemActionComponent {
protected messageKey = 'registerdoi'; protected messageKey = 'register-doi';
doiToUpdateMessage = 'item.edit.' + this.messageKey + '.to-update'; doiToUpdateMessage = 'item.edit.' + this.messageKey + '.to-update';
identifiers$: Observable<Identifier[]>; identifiers$: Observable<Identifier[]>;
processing = false; processing = false;
@@ -84,9 +84,10 @@ export class ItemRegisterDoiComponent extends AbstractSimpleItemActionComponent
this.processing = true; this.processing = true;
this.identifierDataService.registerIdentifier(this.item, 'doi').subscribe( this.identifierDataService.registerIdentifier(this.item, 'doi').subscribe(
(response: RemoteData<Item>) => { (response: RemoteData<Item>) => {
this.processing = false; if (response.hasCompleted) {
//this.router.navigateByUrl(getItemEditRoute(this.item)); this.processing = false;
this.processRestResponse(response); this.processRestResponse(response);
}
} }
) )
} }

View File

@@ -179,7 +179,7 @@ export class ItemStatusComponent implements OnInit {
let tmp_operations = [...operations]; let tmp_operations = [...operations];
if (show) { if (show) {
// Push the new Register DOI item operation // Push the new Register DOI item operation
tmp_operations.push(new ItemOperation('registerDOI', this.getCurrentUrl(item) + '/registerdoi', FeatureID.CanRegisterDOI)); tmp_operations.push(new ItemOperation('register-doi', this.getCurrentUrl(item) + '/register-doi', FeatureID.CanRegisterDOI));
} }
// Check authorisations and merge into new operations list // Check authorisations and merge into new operations list
observableFrom(tmp_operations).pipe( observableFrom(tmp_operations).pipe(

View File

@@ -1942,7 +1942,7 @@
"item.edit.identifiers.doi.status.MINTED": "Minted (not registered)", "item.edit.identifiers.doi.status.MINTED": "Minted (not registered)",
"item.edit.tabs.status.buttons.register-doi.label": "Register a new or pending identifier", "item.edit.tabs.status.buttons.register-doi.label": "Register a new or pending DOI",
"item.edit.tabs.status.buttons.register-doi.button": "Register DOI...", "item.edit.tabs.status.buttons.register-doi.button": "Register DOI...",
@@ -1954,7 +1954,7 @@
"item.edit.register-doi.cancel": "Cancel", "item.edit.register-doi.cancel": "Cancel",
"item.edit.register-doi.success": "DOI registered successfully. Refresh Item Status page to see new DOI details.", "item.edit.register-doi.success": "DOI queued for registration successfully.",
"item.edit.register-doi.error": "Error registering DOI", "item.edit.register-doi.error": "Error registering DOI",