Skip to content
Snippets Groups Projects
Commit 95e16399 authored by Florent Poittevin's avatar Florent Poittevin
Browse files

feat: do not redirect to list of deposit when reserve a doi

parent dc2151cf
No related branches found
No related tags found
1 merge request!107feat: reserve DOI
...@@ -60,6 +60,7 @@ import { ...@@ -60,6 +60,7 @@ import {
take, take,
} from "rxjs/operators"; } from "rxjs/operators";
import { import {
isFalse,
isNullOrUndefined, isNullOrUndefined,
isTrue, isTrue,
TRANSLATE, TRANSLATE,
...@@ -148,6 +149,13 @@ export class DepositDetailEditRoutable extends SharedAbstractDetailEditRoutable< ...@@ -148,6 +149,13 @@ export class DepositDetailEditRoutable extends SharedAbstractDetailEditRoutable<
} }
private _computeCurrentUserRight(): void { private _computeCurrentUserRight(): void {
this.subscribe(this.currentObs.pipe(
filter(deposit => !isNullOrUndefined(deposit) && deposit.resId === this._resId && isFalse(this.isEdit) && deposit.status === Deposit.StatusEnum.INPROGRESS),
tap(deposit => {
this.canReserveDoiAction = isNullOrUndefined(deposit.doi);
}),
));
this.subscribe(this.currentObs.pipe( this.subscribe(this.currentObs.pipe(
distinctUntilChanged(), distinctUntilChanged(),
filter(deposit => !isNullOrUndefined(deposit) && deposit.resId === this._resId), filter(deposit => !isNullOrUndefined(deposit) && deposit.resId === this._resId),
...@@ -157,9 +165,6 @@ export class DepositDetailEditRoutable extends SharedAbstractDetailEditRoutable< ...@@ -157,9 +165,6 @@ export class DepositDetailEditRoutable extends SharedAbstractDetailEditRoutable<
const canDoValidatorActions = this._securityService.depositInValidationStep(deposit); const canDoValidatorActions = this._securityService.depositInValidationStep(deposit);
const canDoAlterationActions = this._securityService.depositInEditionStep(deposit); const canDoAlterationActions = this._securityService.depositInEditionStep(deposit);
if (deposit.status === Deposit.StatusEnum.INPROGRESS && isNullOrUndefined(deposit.doi)) {
this.canReserveDoiAction = true;
}
this.subscribe(combineLatest(this.numberFilesObs, this.numberFilesInErrorObs).pipe( this.subscribe(combineLatest(this.numberFilesObs, this.numberFilesInErrorObs).pipe(
distinctUntilChanged(), distinctUntilChanged(),
filter(([numberFiles, numberFilesInError]) => !isNullOrUndefined(numberFiles) && !isNullOrUndefined(numberFilesInError)), filter(([numberFiles, numberFilesInError]) => !isNullOrUndefined(numberFiles) && !isNullOrUndefined(numberFilesInError)),
...@@ -305,5 +310,4 @@ export class DepositDetailEditRoutable extends SharedAbstractDetailEditRoutable< ...@@ -305,5 +310,4 @@ export class DepositDetailEditRoutable extends SharedAbstractDetailEditRoutable<
).subscribe(); ).subscribe();
} }
} }
...@@ -457,6 +457,9 @@ export class DepositState extends ResourceState<DepositExtended> { ...@@ -457,6 +457,9 @@ export class DepositState extends ResourceState<DepositExtended> {
@Action(DepositAction.ReserveDOI) @Action(DepositAction.ReserveDOI)
reserveDOI(ctx: StateContext<DepositStateModel>, action: DepositAction.ReserveDOI): Observable<DepositExtended> { reserveDOI(ctx: StateContext<DepositStateModel>, action: DepositAction.ReserveDOI): Observable<DepositExtended> {
ctx.patchState({
isLoadingCounter: ctx.getState().isLoadingCounter + 1,
});
return this.apiService.patchByIdWithCustomUrl(this._urlResource + urlSeparator + action.deposit.resId + urlSeparator + ApiActionEnum.RESERVE_DOI) return this.apiService.patchByIdWithCustomUrl(this._urlResource + urlSeparator + action.deposit.resId + urlSeparator + ApiActionEnum.RESERVE_DOI)
.pipe( .pipe(
tap(deposit => ctx.dispatch(new DepositAction.ReserveDOISuccess(deposit))), tap(deposit => ctx.dispatch(new DepositAction.ReserveDOISuccess(deposit))),
...@@ -469,12 +472,21 @@ export class DepositState extends ResourceState<DepositExtended> { ...@@ -469,12 +472,21 @@ export class DepositState extends ResourceState<DepositExtended> {
@Action(DepositAction.ReserveDOISuccess) @Action(DepositAction.ReserveDOISuccess)
reserveDOISuccess(ctx: StateContext<DepositStateModel>, action: DepositAction.ReserveDOISuccess): void { reserveDOISuccess(ctx: StateContext<DepositStateModel>, action: DepositAction.ReserveDOISuccess): void {
ctx.dispatch(new Navigate([RoutesEnum.deposit])); ctx.patchState({
current: undefined,
});
ctx.patchState({
current: action.deposit,
isLoadingCounter: ctx.getState().isLoadingCounter - 1,
});
this.notificationService.showSuccess(TRANSLATE("deposit.notification.reserveDOI.success"), true); this.notificationService.showSuccess(TRANSLATE("deposit.notification.reserveDOI.success"), true);
} }
@Action(DepositAction.ReserveDOIFail) @Action(DepositAction.ReserveDOIFail)
reserveDOIFail(ctx: StateContext<DepositStateModel>, action: DepositAction.ReserveDOIFail): void { reserveDOIFail(ctx: StateContext<DepositStateModel>, action: DepositAction.ReserveDOIFail): void {
ctx.patchState({
isLoadingCounter: ctx.getState().isLoadingCounter - 1,
});
this.notificationService.showError(TRANSLATE("deposit.notification.reserveDOI.fail"), true); this.notificationService.showError(TRANSLATE("deposit.notification.reserveDOI.fail"), true);
} }
} }
...@@ -148,7 +148,7 @@ export abstract class SharedAbstractDetailEditRoutable<TResourceModel, UResource ...@@ -148,7 +148,7 @@ export abstract class SharedAbstractDetailEditRoutable<TResourceModel, UResource
const currentUrl = this._store.selectSnapshot((s: LocalStateModel) => s.router.state.url); const currentUrl = this._store.selectSnapshot((s: LocalStateModel) => s.router.state.url);
this._store.dispatch(new Navigate([StoreRouteLocalUtil.getDetailRoute(this.state), this._resId])).subscribe((state: LocalStateModel) => { this._store.dispatch(new Navigate([StoreRouteLocalUtil.getDetailRoute(this.state), this._resId])).subscribe((state: LocalStateModel) => {
if (state.router.state.url !== currentUrl) { if (state.router.state.url !== currentUrl) {
this.formPresentational.resetFormToInitialValue(); // this.formPresentational.resetFormToInitialValue();
// TODO : Fix don't need to get by id model from backend but fix resetFormToInitialValue with component user role org unit // TODO : Fix don't need to get by id model from backend but fix resetFormToInitialValue with component user role org unit
// TODO : Problem currently if redirect to detail page via breadcrumb in case of Deposit // TODO : Problem currently if redirect to detail page via breadcrumb in case of Deposit
this.retrieveCurrentModelWithUrl(); this.retrieveCurrentModelWithUrl();
......
...@@ -830,7 +830,7 @@ ...@@ -830,7 +830,7 @@
}, },
"reserveDOI": { "reserveDOI": {
"fail": "There was an error when reserving DOI of the deposit", "fail": "There was an error when reserving DOI of the deposit",
"success": "DOI reserved" "success": "DOI reserved with success"
} }
}, },
"organizationUnit": "Organizational Unit", "organizationUnit": "Organizational Unit",
...@@ -863,8 +863,8 @@ ...@@ -863,8 +863,8 @@
"reject": "Reject", "reject": "Reject",
"submissionPolicy": "Submission Policy", "submissionPolicy": "Submission Policy",
"submit": "Submit", "submit": "Submit",
"reserveDOI": "Reserve DOI",
"doi": "DOI", "doi": "DOI",
"reserveDOI": "Reserve DOI",
"tab": { "tab": {
"datafiles": "Files", "datafiles": "Files",
"details": "Metadata" "details": "Metadata"
......
...@@ -830,7 +830,7 @@ ...@@ -830,7 +830,7 @@
}, },
"reserveDOI": { "reserveDOI": {
"fail": "There was an error when reserving DOI of the deposit", "fail": "There was an error when reserving DOI of the deposit",
"success": "DOI reserved" "success": "DOI reserved with success"
} }
}, },
"organizationUnit": "Organizational Unit", "organizationUnit": "Organizational Unit",
......
...@@ -829,8 +829,8 @@ ...@@ -829,8 +829,8 @@
"success": "Dépôt soumis" "success": "Dépôt soumis"
}, },
"reserveDOI": { "reserveDOI": {
"fail": "Il y a eu une erreur lors de la réservation du DOI du dépôt", "fail": "Il y a eu une erreur lors de la réservation du DOI",
"success": "DOI réserve" "success": "DOI réservé avec succès"
} }
}, },
"organizationUnit": "Unité organisationnelle", "organizationUnit": "Unité organisationnelle",
...@@ -897,7 +897,6 @@ ...@@ -897,7 +897,6 @@
"publicationDate": "Date à partir de laquelle le dataset (dépôt) doit être disponible en ligne de manière publique", "publicationDate": "Date à partir de laquelle le dataset (dépôt) doit être disponible en ligne de manière publique",
"submissionPolicy": "Montre les options qui ont été choisies lors de la création de votre espace de préservation (ou unité organisationnelle).\n\nVoir la documentation pour plus d'informations", "submissionPolicy": "Montre les options qui ont été choisies lors de la création de votre espace de préservation (ou unité organisationnelle).\n\nVoir la documentation pour plus d'informations",
"doi": "Si vous souhaitez attribuer un DOI avant la fin du processus d'archivage,\n\nvous pouvez l'attribuer avec le bouton 'Réserver un DOI" "doi": "Si vous souhaitez attribuer un DOI avant la fin du processus d'archivage,\n\nvous pouvez l'attribuer avec le bouton 'Réserver un DOI"
} }
}, },
"error": { "error": {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment