Skip to content
Snippets Groups Projects
Commit 8b35d4b4 authored by Florent POITTEVIN's avatar Florent POITTEVIN
Browse files

fix: aip indicate as missing on storagion when press F5 on detail page

parent be250c62
No related branches found
No related tags found
No related merge requests found
......@@ -5,10 +5,7 @@ import {
OnInit,
} from "@angular/core";
import {MatDialog} from "@angular/material/dialog";
import {
ActivatedRoute,
UrlSegment,
} from "@angular/router";
import {ActivatedRoute} from "@angular/router";
import {SearchScopeEnum} from "@app/features/home/enums/search-scope.enum";
import {HomeAction} from "@app/features/home/stores/home.action";
import {HomeState} from "@app/features/home/stores/home.state";
......@@ -27,11 +24,12 @@ import {
} from "@ngxs/store";
import {GetShortDoiWrapper} from "@shared/components/presentationals/shared-doi-menu/shared-doi-menu.presentational";
import {AppRoutesEnum} from "@shared/enums/routes.enum";
import {RouteUtil} from "@shared/utils/route.util";
import {Observable} from "rxjs";
import {
isNullOrUndefined,
MemoizedUtil,
MARK_AS_TRANSLATABLE,
MemoizedUtil,
} from "solidify-frontend";
@Component({
......@@ -95,15 +93,11 @@ export class HomeDetailRoutable extends SharedAbstractPresentational implements
}
back(): void {
const urlSegmentToParent: UrlSegment[] = [];
this.route.snapshot.parent.pathFromRoot.forEach((activatedRouteSnap) => {
urlSegmentToParent.push(...activatedRouteSnap.url);
});
let search = undefined;
if (!this.isInHomeBrowsing) {
search = this._store.selectSnapshot(HomeState.search);
}
HomeHelper.navigateToSearch(this._store, search, urlSegmentToParent.map(u => u.path));
HomeHelper.navigateToSearch(this._store, search, RouteUtil.generateFullUrlFromActivatedRouteNormal(this.route.parent));
}
private _computeIsInHomeBrowsing(): boolean {
......
......@@ -15,6 +15,7 @@ import {
PreservationPlanningRoutesEnum,
RoutesEnum,
} from "@shared/enums/routes.enum";
import {RouteUtil} from "@shared/utils/route.util";
import {
Observable,
of,
......@@ -52,7 +53,8 @@ export class AipDetailGuardService implements CanActivate {
return of(false);
}
this._store.dispatch(new PreservationAipAction.GetById(idAip, false, false, storagionNodeId));
const url = RouteUtil.generateFullUrlStringFromActivatedRouteSnapshot(route);
this._store.dispatch(new PreservationAipAction.GetById(idAip, false, false, storagionNodeId, url));
return this._actions$.pipe(
ofActionCompleted(PreservationAipAction.GetById),
take(1),
......
......@@ -3,7 +3,7 @@ import {Store} from "@ngxs/store";
import {AipTabEnum} from "@preservation/aip/enums/aip-tab.enum";
import {
AccessResourceApiEnum,
ArchivalStorageResourceApiEnum
ArchivalStorageResourceApiEnum,
} from "@shared/enums/api.enum";
import {
AppRoutesEnum,
......@@ -11,7 +11,6 @@ import {
} from "@shared/enums/routes.enum";
import {
isNullOrUndefined,
isNumber,
StringUtil,
} from "solidify-frontend";
......@@ -45,12 +44,13 @@ export class AipHelper {
return undefined;
}
static generateUrlResource(store: Store, storagionNumber: number | undefined = undefined): string {
static generateUrlResource(store: Store, storagionNumber: number | undefined = undefined, url: string | undefined = undefined): string {
if (isNullOrUndefined(store)) {
return StringUtil.stringEmpty;
}
const url = store.selectSnapshot(state => state.router.state.url);
url = isNullOrUndefined(url) ? store.selectSnapshot(state => state.router?.state?.url) : url;
if (url.includes(PreservationPlanningRoutesEnum.aipDownloaded)) {
return AccessResourceApiEnum.aipDownloaded;
}
......@@ -58,7 +58,7 @@ export class AipHelper {
if (isNullOrUndefined(storagionNumber)) {
if (url.includes(PreservationPlanningRoutesEnum.aipDetail)) {
const urlParts = url.split(AppRoutesEnum.separator);
storagionNumber = urlParts[urlParts.indexOf(PreservationPlanningRoutesEnum.aipDetail) - 1];
storagionNumber = +urlParts[urlParts.indexOf(PreservationPlanningRoutesEnum.aipDetail) - 1];
} else {
storagionNumber = store.selectSnapshot(state => state.router.state.root.children[0].children[0].children[0].params[PreservationPlanningRoutesEnum.storagionNumberWithoutPrefixParam]);
}
......@@ -68,7 +68,7 @@ export class AipHelper {
if (isNullOrUndefined(storagion)) {
if (String(storagionNumber) === PreservationPlanningRoutesEnum.job) {
//in case the request comes from preservation job to show the history status, return the principal storagion url
return ArchivalStorageResourceApiEnum.aip;
return ArchivalStorageResourceApiEnum.aip;
}
throw new Error(`The storagion index '${storagionNumber}' is not find in setting`);
}
......
......@@ -53,7 +53,7 @@ export namespace PreservationAipAction {
@TypeDefaultAction(state)
export class GetById extends ResourceAction.GetById {
constructor(public id: string, public keepCurrentContext: boolean = false, public addInListTemp: boolean = false, public storagionNumber: number | undefined = undefined) {
constructor(public id: string, public keepCurrentContext: boolean = false, public addInListTemp: boolean = false, public storagionNumber: number | undefined = undefined, public url: string | undefined) {
super(id, keepCurrentContext, addInListTemp);
}
}
......
......@@ -53,13 +53,13 @@ import {
ApiService,
defaultResourceStateInitValue,
isNullOrUndefined,
MARK_AS_TRANSLATABLE,
NotificationService,
OverrideDefaultAction,
ResourceState,
ResourceStateModel,
SolidifyStateError,
StoreUtil,
MARK_AS_TRANSLATABLE,
} from "solidify-frontend";
export interface PreservationAipStateModel extends ResourceStateModel<Aip> {
......@@ -144,7 +144,8 @@ export class PreservationAipState extends ResourceState<PreservationAipStateMode
...reset,
});
return this.apiService.getById<Aip>(AipHelper.generateUrlResource(this.store, action.storagionNumber), action.id)
const url = AipHelper.generateUrlResource(this.store, action.storagionNumber, action.url);
return this.apiService.getById<Aip>(url, action.id)
.pipe(
tap((model: Aip) => {
ctx.dispatch(new PreservationAipAction.GetByIdSuccess(action, model));
......
......@@ -7,10 +7,7 @@ import {
ViewChild,
} from "@angular/core";
import {MatDialog} from "@angular/material/dialog";
import {
ActivatedRoute,
UrlSegment,
} from "@angular/router";
import {ActivatedRoute} from "@angular/router";
import {SharedAbstractCrudRoutable} from "@app/shared/components/routables/shared-abstract-crud/shared-abstract-crud.routable";
import {DataTableColumns} from "@app/shared/models/data-table-columns.model";
import {StoreRouteLocalUtil} from "@app/shared/utils/store-route-local.util";
......@@ -29,18 +26,19 @@ import {DataTableActions} from "@shared/models/data-table-actions.model";
import {DeleteDialog} from "@shared/models/delete-dialog.model";
import {ExtraButtonToolbar} from "@shared/models/extra-button-toolbar.model";
import {RouterExtService} from "@shared/services/router-ext.service";
import {RouteUtil} from "@shared/utils/route.util";
import {StoreDialogUtil} from "@shared/utils/store-dialog.util";
import {Observable} from "rxjs";
import {tap} from "rxjs/operators";
import {
BaseResourceType,
isNullOrUndefined,
MARK_AS_TRANSLATABLE,
QueryParameters,
ResourceActionHelper,
ResourceNameSpace,
ResourceStateModel,
StoreUtil,
MARK_AS_TRANSLATABLE,
} from "solidify-frontend";
export abstract class SharedAbstractListRoutable<TResourceModel extends BaseResourceType, UResourceStateModel extends ResourceStateModel<TResourceModel>> extends SharedAbstractCrudRoutable<TResourceModel, UResourceStateModel> implements OnInit, AfterViewInit {
......@@ -173,11 +171,7 @@ export abstract class SharedAbstractListRoutable<TResourceModel extends BaseReso
}
back(): void {
const urlSegmentToParent: UrlSegment[] = [];
this._route.snapshot.parent.parent.pathFromRoot.forEach((activatedRouteSnap) => {
urlSegmentToParent.push(...activatedRouteSnap.url);
});
this._store.dispatch(new Navigate(urlSegmentToParent.map(u => u.path)));
this._store.dispatch(new Navigate(RouteUtil.generateFullUrlFromActivatedRouteNormal(this._route.parent.parent)));
}
navigate(route: RoutesEnum): void {
......
import {
ActivatedRoute,
ActivatedRouteSnapshot,
UrlSegment,
} from "@angular/router";
import {AppRoutesEnum} from "@shared/enums/routes.enum";
export class RouteUtil {
static generateFullUrlFromActivatedRouteNormal(route: ActivatedRoute): string[] {
return this.generateFullUrlFromActivatedRouteSnapshot(route.snapshot);
}
static generateFullUrlStringFromActivatedRouteNormal(route: ActivatedRoute): string {
return this.generateFullUrlFromActivatedRouteNormal(route).join(AppRoutesEnum.separator);
}
static generateFullUrlFromActivatedRouteSnapshot(route: ActivatedRouteSnapshot): string[] {
const urlSegmentToParent: UrlSegment[] = [];
route.pathFromRoot.forEach((activatedRouteSnap) => {
urlSegmentToParent.push(...activatedRouteSnap.url);
});
return urlSegmentToParent.map(u => u.path);
}
static generateFullUrlStringFromActivatedRouteSnapshot(route: ActivatedRouteSnapshot): string {
return this.generateFullUrlFromActivatedRouteSnapshot(route).join(AppRoutesEnum.separator);
}
}
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