Skip to content

Commit dcd9b87

Browse files
committed
use injector in navigation callback
1 parent 2e38026 commit dcd9b87

File tree

4 files changed

+23
-23
lines changed

4 files changed

+23
-23
lines changed

projects/fusio-sdk/src/lib/component/account-container/account-container.component.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Component, OnInit} from '@angular/core';
1+
import {Component, EnvironmentInjector, OnInit} from '@angular/core';
22
import {ActivatedRoute, Router} from "@angular/router";
33
import {Item, NavigationService} from "../../service/navigation.service";
44

@@ -12,10 +12,10 @@ export class AccountContainerComponent implements OnInit {
1212
active?: string;
1313
items: Array<Item> = [];
1414

15-
constructor(private router: Router, private route: ActivatedRoute, private navigation: NavigationService) { }
15+
constructor(private router: Router, private route: ActivatedRoute, private navigation: NavigationService, private injector: EnvironmentInjector) { }
1616

1717
async ngOnInit(): Promise<void> {
18-
this.items = await this.navigation.getAccountNavigation(this);
18+
this.items = await this.navigation.getAccountNavigation(this.injector);
1919
this.active = this.items[0].title;
2020

2121
this.route.url.subscribe(() => {

projects/fusio-sdk/src/lib/component/bootstrap/bootstrap.component.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Component, OnInit} from '@angular/core';
1+
import {Component, EnvironmentInjector, OnInit} from '@angular/core';
22
import {User} from "fusio-sdk/dist/src/generated/backend/User";
33
import {UserService} from "../../service/user.service";
44
import {Item, NavigationService} from "../../service/navigation.service";
@@ -13,12 +13,12 @@ export class BootstrapComponent implements OnInit {
1313
userMenu: Array<Item> = [];
1414
anonymousMenu: Array<Item> = [];
1515

16-
constructor(private userMeta: UserService, private navigation: NavigationService) { }
16+
constructor(private userMeta: UserService, private navigation: NavigationService, private injector: EnvironmentInjector) { }
1717

1818
async ngOnInit(): Promise<void> {
1919
this.user = this.userMeta.get();
20-
this.userMenu = await this.navigation.getUserNavigation(this);
21-
this.anonymousMenu = await this.navigation.getAnonymousNavigation(this);
20+
this.userMenu = await this.navigation.getUserNavigation(this.injector);
21+
this.anonymousMenu = await this.navigation.getAnonymousNavigation(this.injector);
2222
}
2323

2424
}

projects/fusio-sdk/src/lib/component/navigation/navigation.component.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Component, OnInit} from '@angular/core';
1+
import {Component, EnvironmentInjector, OnInit} from '@angular/core';
22
import {GroupItem, NavigationService} from "../../service/navigation.service";
33
import {ConfigService} from "../../service/config.service";
44

@@ -13,13 +13,13 @@ export class NavigationComponent implements OnInit {
1313
version?: string;
1414
items: Array<GroupItem> = [];
1515

16-
constructor(private navigation: NavigationService, private config: ConfigService) {
16+
constructor(private navigation: NavigationService, private config: ConfigService, private injector: EnvironmentInjector) {
1717
}
1818

1919
async ngOnInit(): Promise<void> {
2020
this.title = this.config.getTitle() || 'Fusio';
2121
this.version = this.config.getVersion();
22-
this.items = await this.navigation.getMainNavigation(this);
22+
this.items = await this.navigation.getMainNavigation(this.injector);
2323
}
2424

2525
changeNavHeading(item: GroupItem): void {

projects/fusio-sdk/src/lib/service/navigation.service.ts

+13-13
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Injectable, OnInit} from '@angular/core';
1+
import {EnvironmentInjector, Injectable, runInInjectionContext} from '@angular/core';
22
import {ConfigService} from "./config.service";
33
import {BackendService} from "./backend.service";
44

@@ -10,26 +10,26 @@ export class NavigationService {
1010
constructor(private backend: BackendService, private config: ConfigService) {
1111
}
1212

13-
async getMainNavigation(context: OnInit): Promise<Array<GroupItem>> {
14-
return this.checkPermissions(this.config.getNavigation(), context);
13+
async getMainNavigation(injector: EnvironmentInjector): Promise<Array<GroupItem>> {
14+
return this.checkPermissions(this.config.getNavigation(), injector);
1515
}
1616

17-
async getUserNavigation(context: OnInit): Promise<Array<Item>> {
18-
return this.checkPermissionItems(this.config.getUserNavigation(), context);
17+
async getUserNavigation(injector: EnvironmentInjector): Promise<Array<Item>> {
18+
return this.checkPermissionItems(this.config.getUserNavigation(), injector);
1919
}
2020

21-
async getAnonymousNavigation(context: OnInit): Promise<Array<Item>> {
22-
return this.checkPermissionItems(this.config.getAnonymousNavigation(), context);
21+
async getAnonymousNavigation(injector: EnvironmentInjector): Promise<Array<Item>> {
22+
return this.checkPermissionItems(this.config.getAnonymousNavigation(), injector);
2323
}
2424

25-
async getAccountNavigation(context: OnInit): Promise<Array<Item>> {
26-
return this.checkPermissionItems(this.config.getAccountNavigation(), context);
25+
async getAccountNavigation(injector: EnvironmentInjector): Promise<Array<Item>> {
26+
return this.checkPermissionItems(this.config.getAccountNavigation(), injector);
2727
}
2828

29-
private async checkPermissions(navigation: Array<GroupItem>, context: OnInit): Promise<Array<GroupItem>> {
29+
private async checkPermissions(navigation: Array<GroupItem>, injector: EnvironmentInjector): Promise<Array<GroupItem>> {
3030
let result = [];
3131
for (let i = 0; i < navigation.length; i++) {
32-
const children = await this.checkPermissionItems(navigation[i].children, context);
32+
const children = await this.checkPermissionItems(navigation[i].children, injector);
3333
if (children.length > 0) {
3434
let menu = navigation[i];
3535
menu.children = children;
@@ -40,9 +40,9 @@ export class NavigationService {
4040
return result;
4141
}
4242

43-
private async checkPermissionItems(items: Items, context: OnInit): Promise<Array<Item>> {
43+
private async checkPermissionItems(items: Items, injector: EnvironmentInjector): Promise<Array<Item>> {
4444
if (items instanceof Function) {
45-
items = await items.apply(context);
45+
items = await runInInjectionContext(injector, items);
4646
}
4747

4848
if (!Array.isArray(items)) {

0 commit comments

Comments
 (0)