[ACA-543] Disable Share feature based on repository property (#658)

* add visibility type to navigation schema

* repository data model

* add repository state

* add repository state

* add repository evaluator

* allot navigation elements to called again

* AppRuleContext extends

* repository status resolver

* map repository evaluator

* reevaluate navigation elements

* generic route evaluator

* add route guard on Share

* evaluate guard based on data property

* changed old imports

* add Action suffix

* set state false by default

* tree shakable services to simplify rebase

* fix rebase

* isQuickShareEnabled initial null state

* repository store effects

* repository store actions

* refactored

* refactored
This commit is contained in:
Cilibiu Bogdan
2018-09-28 12:32:36 +03:00
committed by Denys Vuika
parent 30863e7bdd
commit 8d9d3dbc45
21 changed files with 517 additions and 39 deletions

View File

@@ -26,7 +26,7 @@
import { Injectable, Type } from '@angular/core';
import { Store } from '@ngrx/store';
import { Route } from '@angular/router';
import { AppStore } from '../store/states';
import { AppStore, RepositoryState } from '../store/states';
import { ruleContext } from '../store/selectors/app.selectors';
import { NodePermissionService } from '../services/node-permission.service';
import { ProfileResolver } from '../services/profile.resolver';
@@ -75,6 +75,7 @@ export class AppExtensionService implements RuleContext {
selection: SelectionState;
navigation: NavigationState;
profile: ProfileState;
repository: RepositoryState;
constructor(
private store: Store<AppStore>,
@@ -87,6 +88,7 @@ export class AppExtensionService implements RuleContext {
this.selection = result.selection;
this.navigation = result.navigation;
this.profile = result.profile;
this.repository = result.repository;
});
}
@@ -141,16 +143,17 @@ export class AppExtensionService implements RuleContext {
}
protected loadNavBar(config: ExtensionConfig): Array<NavBarGroupRef> {
const elements = this.loader.getElements<NavBarGroupRef>(
config,
'features.navbar'
);
return this.loader.getElements<NavBarGroupRef>(config, 'features.navbar');
}
getApplicationNavigation(elements) {
return elements.map(group => {
return {
...group,
items: (group.items || [])
.filter(item => !item.disabled)
.filter(item => {
return this.filterByRules(item);
})
.sort(sortByOrder)
.map(item => {
const routeRef = this.extensions.getRouteById(item.route);