Skip to content

Commit

Permalink
[ACS-8747] pass location as a query param (#4124)
Browse files Browse the repository at this point in the history
  • Loading branch information
nikita-web-ua authored Sep 18, 2024
1 parent 2286c72 commit e206727
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ export class DetailsComponent extends PageComponent implements OnInit, OnDestroy
});
this.extensions
.getAllowedSidebarActions()
.pipe(takeUntil(this.onDestroy$))
.pipe(first())
.subscribe((aspectActions) => {
this.aspectActions = aspectActions;
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ import {
} from '@alfresco/aca-shared/store';
import { RenditionService } from '@alfresco/adf-content-services';
import { ViewerEffects } from './viewer.effects';
import { NavigationEnd, Router } from '@angular/router';
import { NavigationEnd, Router, ActivatedRoute } from '@angular/router';
import { of } from 'rxjs';
import { MatDialogModule } from '@angular/material/dialog';
import { MatSnackBarModule } from '@angular/material/snack-bar';
Expand All @@ -75,7 +75,7 @@ describe('NodeEffects', () => {
MatDialogModule,
MatSnackBarModule
],
providers: [RenditionService]
providers: [RenditionService, { provide: ActivatedRoute, useValue: { queryParams: of({ location: 'test-page' }) } }]
});

store = TestBed.inject(Store);
Expand Down Expand Up @@ -561,7 +561,7 @@ describe('NodeEffects', () => {
const node: any = { entry: { isFile: true, id: 'node-id' } };

store.dispatch(new ExpandInfoDrawerAction(node));
expect(store.dispatch).toHaveBeenCalledWith(new NavigateUrlAction('personal-files/details/node-id'));
expect(store.dispatch).toHaveBeenCalledWith(new NavigateUrlAction('personal-files/details/node-id?location=test-page'));
});
});
});
40 changes: 24 additions & 16 deletions projects/aca-content/src/lib/store/effects/node.effects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
*/

import { Actions, ofType, createEffect } from '@ngrx/effects';
import { Injectable } from '@angular/core';
import { Injectable, SecurityContext } from '@angular/core';
import { first, map, take } from 'rxjs/operators';
import { Store } from '@ngrx/store';
import {
Expand Down Expand Up @@ -55,7 +55,8 @@ import {
} from '@alfresco/aca-shared/store';
import { ContentManagementService } from '../../services/content-management.service';
import { RenditionService } from '@alfresco/adf-content-services';
import { NavigationEnd, Router } from '@angular/router';
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
import { DomSanitizer } from '@angular/platform-browser';

@Injectable()
export class NodeEffects {
Expand All @@ -64,7 +65,9 @@ export class NodeEffects {
private actions$: Actions,
private router: Router,
private contentService: ContentManagementService,
private renditionViewer: RenditionService
private renditionViewer: RenditionService,
private activatedRoute: ActivatedRoute,
private sanitizer: DomSanitizer
) {}

shareNode$ = createEffect(
Expand Down Expand Up @@ -314,20 +317,25 @@ export class NodeEffects {
this.router.events
.pipe(first((event) => event instanceof NavigationEnd))
.subscribe(() => this.store.dispatch(new SetInfoDrawerStateAction(true)));
if (action?.payload) {

this.activatedRoute.queryParams.pipe(take(1)).subscribe((params) => {
const location = params.location || this.router.url;
const sanitizedLocation = this.sanitizer.sanitize(SecurityContext.URL, location);
const route = 'personal-files/details';
this.store.dispatch(new NavigateUrlAction([route, action.payload.entry.id].join('/')));
} else {
this.store
.select(getAppSelection)
.pipe(take(1))
.subscribe((selection) => {
if (selection && !selection.isEmpty) {
const route = 'personal-files/details';
this.store.dispatch(new NavigateUrlAction([route, selection.last.entry.id].join('/')));
}
});
}

if (action?.payload) {
this.store.dispatch(new NavigateUrlAction([route, action.payload.entry.id].join('/') + `?location=${sanitizedLocation}`));
} else {
this.store
.select(getAppSelection)
.pipe(take(1))
.subscribe((selection) => {
if (selection && !selection.isEmpty) {
this.store.dispatch(new NavigateUrlAction([route, selection.last.entry.id].join('/') + `?location=${sanitizedLocation}`));
}
});
}
});
})
),
{ dispatch: false }
Expand Down

0 comments on commit e206727

Please sign in to comment.