diff --git a/src/app/components/layout/app-layout/app-layout.component.ts b/src/app/components/layout/app-layout/app-layout.component.ts index 103defa4a..553e3c790 100644 --- a/src/app/components/layout/app-layout/app-layout.component.ts +++ b/src/app/components/layout/app-layout/app-layout.component.ts @@ -43,8 +43,8 @@ import { NodePermissionService } from '@alfresco/aca-shared'; import { BreakpointObserver } from '@angular/cdk/layout'; import { AppStore, - SetSelectedNodesAction, - getCurrentFolder + getCurrentFolder, + SetSelectedNodesAction } from '@alfresco/aca-shared/store'; import { Directionality } from '@angular/cdk/bidi'; diff --git a/src/app/components/search/search-results-row/search-results-row.component.html b/src/app/components/search/search-results-row/search-results-row.component.html index a68e32897..55e94e565 100644 --- a/src/app/components/search/search-results-row/search-results-row.component.html +++ b/src/app/components/search/search-results-row/search-results-row.component.html @@ -1,8 +1,8 @@
- + {{ name$ | async }} - + {{ name$ | async }} {{ title$ | async }} diff --git a/src/app/components/search/search-results-row/search-results-row.component.ts b/src/app/components/search/search-results-row/search-results-row.component.ts index 7cdb41f69..185467a72 100644 --- a/src/app/components/search/search-results-row/search-results-row.component.ts +++ b/src/app/components/search/search-results-row/search-results-row.component.ts @@ -121,11 +121,13 @@ export class SearchResultsRowComponent implements OnInit, OnDestroy { return this.node.entry.isFile; } - showPreview() { + showPreview(event: MouseEvent) { + event.stopPropagation(); this.store.dispatch(new ViewFileAction(this.node)); } - navigate() { + navigate(event: MouseEvent) { + event.stopPropagation(); this.store.dispatch(new NavigateToFolder(this.node)); } } diff --git a/src/app/components/toolbar/toggle-favorite/toggle-favorite.component.spec.ts b/src/app/components/toolbar/toggle-favorite/toggle-favorite.component.spec.ts index 7e7ceea0b..b4c6c3d78 100644 --- a/src/app/components/toolbar/toggle-favorite/toggle-favorite.component.spec.ts +++ b/src/app/components/toolbar/toggle-favorite/toggle-favorite.component.spec.ts @@ -23,10 +23,70 @@ * along with Alfresco. If not, see . */ +import { TestBed } from '@angular/core/testing'; import { ToggleFavoriteComponent } from './toggle-favorite.component'; +import { Store } from '@ngrx/store'; +import { ExtensionService } from '@alfresco/adf-extensions'; +import { CoreModule } from '@alfresco/adf-core'; +import { Router } from '@angular/router'; +import { of } from 'rxjs'; describe('ToggleFavoriteComponent', () => { - it('should be defined', () => { - expect(ToggleFavoriteComponent).toBeDefined(); + let component: ToggleFavoriteComponent; + let fixture; + let router; + const mockRouter = { + url: 'some-url' + }; + const mockStore = { + dispatch: jasmine.createSpy('dispatch'), + select: jasmine.createSpy('select').and.returnValue( + of({ + nodes: [] + }) + ) + }; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [CoreModule.forRoot()], + declarations: [ToggleFavoriteComponent], + providers: [ + ExtensionService, + { provide: Store, useValue: mockStore }, + { provide: Router, useValue: mockRouter } + ] + }); + + fixture = TestBed.createComponent(ToggleFavoriteComponent); + component = fixture.componentInstance; + router = TestBed.get(Router); + }); + + afterEach(() => { + mockStore.dispatch.calls.reset(); + }); + + it('should get selection data on initialization', () => { + expect(mockStore.select).toHaveBeenCalled(); + }); + + it('should not dispatch reload if route is not specified', () => { + component.data = "['/reload_on_this_route']"; + + fixture.detectChanges(); + component.onToggleEvent(); + + expect(mockStore.dispatch).not.toHaveBeenCalled(); + }); + + it('should dispatch reload if route is specified', () => { + component.data = "['/reload_on_this_route']"; + router.url = '/reload_on_this_route'; + + fixture.detectChanges(); + component.onToggleEvent(); + + expect(mockStore.dispatch).toHaveBeenCalled(); }); }); diff --git a/src/app/components/toolbar/toggle-favorite/toggle-favorite.component.ts b/src/app/components/toolbar/toggle-favorite/toggle-favorite.component.ts index 32498c979..5c5bc1c4c 100644 --- a/src/app/components/toolbar/toggle-favorite/toggle-favorite.component.ts +++ b/src/app/components/toolbar/toggle-favorite/toggle-favorite.component.ts @@ -23,15 +23,16 @@ * along with Alfresco. If not, see . */ -import { Component, ViewEncapsulation } from '@angular/core'; +import { Component, ViewEncapsulation, OnInit, Input } from '@angular/core'; import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; -import { SelectionState } from '@alfresco/adf-extensions'; +import { SelectionState, ExtensionService } from '@alfresco/adf-extensions'; import { AppStore, ReloadDocumentListAction, getAppSelection } from '@alfresco/aca-shared/store'; +import { Router } from '@angular/router'; @Component({ selector: 'app-toggle-favorite', @@ -54,14 +55,30 @@ import { encapsulation: ViewEncapsulation.None, host: { class: 'app-toggle-favorite' } }) -export class ToggleFavoriteComponent { +export class ToggleFavoriteComponent implements OnInit { + @Input() data: any; selection$: Observable; + private reloadOnRoutes: string[] = []; - constructor(private store: Store) { + constructor( + private store: Store, + private extensionService: ExtensionService, + private router: Router + ) { this.selection$ = this.store.select(getAppSelection); } + ngOnInit() { + if (this.data) { + this.reloadOnRoutes = this.extensionService.runExpression( + `$( ${this.data} )` + ); + } + } + onToggleEvent() { - this.store.dispatch(new ReloadDocumentListAction()); + if (this.reloadOnRoutes.includes(this.router.url)) { + this.store.dispatch(new ReloadDocumentListAction()); + } } } diff --git a/src/app/components/toolbar/toolbar-menu/toolbar-menu.component.html b/src/app/components/toolbar/toolbar-menu/toolbar-menu.component.html index 3e7a298fa..6a26c205a 100644 --- a/src/app/components/toolbar/toolbar-menu/toolbar-menu.component.html +++ b/src/app/components/toolbar/toolbar-menu/toolbar-menu.component.html @@ -12,7 +12,10 @@ - + diff --git a/src/app/services/content-management.service.ts b/src/app/services/content-management.service.ts index b2bbb4313..0867dddfe 100644 --- a/src/app/services/content-management.service.ts +++ b/src/app/services/content-management.service.ts @@ -111,7 +111,6 @@ export class ContentManagementService { node.entry.isFavorite = true; }); this.store.dispatch(new SetSelectedNodesAction(nodes)); - this.store.dispatch(new ReloadDocumentListAction()); }); } } @@ -123,7 +122,6 @@ export class ContentManagementService { node.entry.isFavorite = false; }); this.store.dispatch(new SetSelectedNodesAction(nodes)); - this.store.dispatch(new ReloadDocumentListAction()); }); } } diff --git a/src/assets/app.extensions.json b/src/assets/app.extensions.json index 9f08bdab0..afb536b35 100644 --- a/src/assets/app.extensions.json +++ b/src/assets/app.extensions.json @@ -356,6 +356,7 @@ "comment": "workaround for Recent Files and Search API issue", "type": "custom", "order": 400, + "data": "['/favorites', '/favorite/libraries']", "component": "app.toolbar.toggleFavorite", "rules": { "visible": "canToggleFavorite"