Browse Source

refactor(admin-ui): Use ServerConfigService where possible

Michael Bromley 5 years ago
parent
commit
36700afe82

File diff suppressed because it is too large
+ 551 - 417
packages/admin-ui/src/lib/core/src/common/generated-types.ts


+ 5 - 0
packages/admin-ui/src/lib/core/src/data/definitions/settings-definitions.ts

@@ -567,6 +567,11 @@ export const GET_SERVER_CONFIG = gql`
                     to
                 }
                 permittedAssetTypes
+                permissions {
+                    name
+                    description
+                    assignable
+                }
                 customFieldConfig {
                     Address {
                         ...CustomFields

+ 9 - 1
packages/admin-ui/src/lib/core/src/data/server-config.ts

@@ -1,5 +1,4 @@
 import { Injectable, Injector } from '@angular/core';
-import { gql } from 'apollo-angular';
 
 import {
     CustomFieldConfig,
@@ -7,6 +6,7 @@ import {
     GetGlobalSettings,
     GetServerConfig,
     OrderProcessState,
+    PermissionDefinition,
     ServerConfig,
 } from '../common/generated-types';
 
@@ -81,6 +81,14 @@ export class ServerConfigService {
         return this.serverConfig.orderProcess;
     }
 
+    getPermittedAssetTypes(): string[] {
+        return this.serverConfig.permittedAssetTypes;
+    }
+
+    getPermissionDefinitions(): PermissionDefinition[] {
+        return this.serverConfig.permissions;
+    }
+
     get serverConfig(): ServerConfig {
         return this._serverConfig;
     }

+ 1 - 1
packages/admin-ui/src/lib/order/src/components/order-list/order-list.component.html

@@ -3,7 +3,7 @@
         <div class="search-form">
             <select clrSelect name="state" [formControl]="stateFilter">
                 <option value="all">{{ 'order.state-all-orders' | translate }}</option>
-                <option *ngFor="let orderState of (orderStates$ | async)" [value]="orderState">
+                <option *ngFor="let orderState of orderStates" [value]="orderState">
                     {{ orderState | orderStateI18nToken | translate }}
                 </option>
             </select>

+ 8 - 5
packages/admin-ui/src/lib/order/src/components/order-list/order-list.component.ts

@@ -1,7 +1,7 @@
 import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
 import { FormControl } from '@angular/forms';
 import { ActivatedRoute, Router } from '@angular/router';
-import { BaseListComponent } from '@vendure/admin-ui/core';
+import { BaseListComponent, ServerConfigService } from '@vendure/admin-ui/core';
 import { GetOrderList, SortOrder } from '@vendure/admin-ui/core';
 import { DataService } from '@vendure/admin-ui/core';
 import { merge } from 'rxjs';
@@ -18,11 +18,14 @@ export class OrderListComponent
     implements OnInit {
     searchTerm = new FormControl('');
     stateFilter = new FormControl('all');
-    orderStates$ = this.dataService.settings
-        .getGlobalSettings()
-        .mapSingle(data => data.globalSettings.serverConfig.orderProcess.map(item => item.name));
+    orderStates = this.serverConfigService.getOrderProcessStates().map(item => item.name);
 
-    constructor(private dataService: DataService, router: Router, route: ActivatedRoute) {
+    constructor(
+        private serverConfigService: ServerConfigService,
+        private dataService: DataService,
+        router: Router,
+        route: ActivatedRoute,
+    ) {
         super(router, route);
         super.setQueryFn(
             (...args: any[]) => this.dataService.order.getOrders(...args).refetchOnChannelChange(),

+ 1 - 2
packages/admin-ui/src/lib/settings/src/components/admin-detail/admin-detail.component.html

@@ -86,9 +86,8 @@
         </li>
     </ul>
     <vdr-permission-grid
-        *ngIf="permissionDefinitions$ | async as defs"
         [activePermissions]="getPermissionsForSelectedChannel()"
-        [permissionDefinitions]="defs"
+        [permissionDefinitions]="permissionDefinitions"
         [readonly]="true"
     ></vdr-permission-grid>
 </form>

+ 30 - 34
packages/admin-ui/src/lib/settings/src/components/admin-detail/admin-detail.component.ts

@@ -35,7 +35,7 @@ export class AdminDetailComponent
     extends BaseDetailComponent<GetAdministrator.Administrator>
     implements OnInit, OnDestroy {
     administrator$: Observable<GetAdministrator.Administrator>;
-    permissionDefinitions$: Observable<PermissionDefinition[]>;
+    permissionDefinitions: PermissionDefinition[];
     allRoles$: Observable<Role.Fragment[]>;
     selectedRoles: Role.Fragment[] = [];
     detailForm: FormGroup;
@@ -77,9 +77,7 @@ export class AdminDetailComponent
                 }
             }
         });
-        this.permissionDefinitions$ = this.dataService.settings
-            .getGlobalSettings('cache-and-network')
-            .mapSingle(({ globalSettings }) => globalSettings.serverConfig.permissions);
+        this.permissionDefinitions = this.serverConfigService.getPermissionDefinitions();
     }
 
     ngOnDestroy(): void {
@@ -189,41 +187,39 @@ export class AdminDetailComponent
     }
 
     private buildPermissionsMap() {
-        this.permissionDefinitions$.pipe(take(1)).subscribe(defs => {
-            const permissionsControl = this.detailForm.get('roles');
-            if (permissionsControl) {
-                const roles: RoleFragment[] = permissionsControl.value;
-                const channelIdPermissionsMap = new Map<string, Set<Permission>>();
-                const channelIdCodeMap = new Map<string, string>();
+        const permissionsControl = this.detailForm.get('roles');
+        if (permissionsControl) {
+            const roles: RoleFragment[] = permissionsControl.value;
+            const channelIdPermissionsMap = new Map<string, Set<Permission>>();
+            const channelIdCodeMap = new Map<string, string>();
 
-                for (const role of roles) {
-                    for (const channel of role.channels) {
-                        const channelPermissions = channelIdPermissionsMap.get(channel.id);
-                        const permissionSet = channelPermissions || new Set<Permission>();
+            for (const role of roles) {
+                for (const channel of role.channels) {
+                    const channelPermissions = channelIdPermissionsMap.get(channel.id);
+                    const permissionSet = channelPermissions || new Set<Permission>();
 
-                        role.permissions.forEach(p => permissionSet.add(p));
-                        channelIdPermissionsMap.set(channel.id, permissionSet);
-                        channelIdCodeMap.set(channel.id, channel.code);
-                    }
+                    role.permissions.forEach(p => permissionSet.add(p));
+                    channelIdPermissionsMap.set(channel.id, permissionSet);
+                    channelIdCodeMap.set(channel.id, channel.code);
                 }
+            }
 
-                this.selectedRolePermissions = {} as any;
-                for (const channelId of Array.from(channelIdPermissionsMap.keys())) {
-                    // tslint:disable-next-line:no-non-null-assertion
-                    const permissionSet = channelIdPermissionsMap.get(channelId)!;
-                    const permissionsHash: { [K in Permission]: boolean } = {} as any;
-                    for (const def of defs) {
-                        permissionsHash[def.name] = permissionSet.has(def.name as Permission);
-                    }
-                    this.selectedRolePermissions[channelId] = {
-                        // tslint:disable:no-non-null-assertion
-                        channelId,
-                        channelCode: channelIdCodeMap.get(channelId)!,
-                        permissions: permissionsHash,
-                        // tslint:enable:no-non-null-assertion
-                    };
+            this.selectedRolePermissions = {} as any;
+            for (const channelId of Array.from(channelIdPermissionsMap.keys())) {
+                // tslint:disable-next-line:no-non-null-assertion
+                const permissionSet = channelIdPermissionsMap.get(channelId)!;
+                const permissionsHash: { [K in Permission]: boolean } = {} as any;
+                for (const def of this.serverConfigService.getPermissionDefinitions()) {
+                    permissionsHash[def.name] = permissionSet.has(def.name as Permission);
                 }
+                this.selectedRolePermissions[channelId] = {
+                    // tslint:disable:no-non-null-assertion
+                    channelId,
+                    channelCode: channelIdCodeMap.get(channelId)!,
+                    permissions: permissionsHash,
+                    // tslint:enable:no-non-null-assertion
+                };
             }
-        });
+        }
     }
 }

+ 1 - 2
packages/admin-ui/src/lib/settings/src/components/role-detail/role-detail.component.html

@@ -55,8 +55,7 @@
     </vdr-form-field>
     <label>{{ 'settings.permissions' | translate }}</label>
     <vdr-permission-grid
-        *ngIf="permissionDefinitions$ | async as defs"
-        [permissionDefinitions]="defs"
+        [permissionDefinitions]="permissionDefinitions"
         [activePermissions]="detailForm.get('permissions')?.value"
         (permissionChange)="setPermission($event)"
         [readonly]="!('UpdateAdministrator' | hasPermission)"

+ 2 - 4
packages/admin-ui/src/lib/settings/src/components/role-detail/role-detail.component.ts

@@ -28,7 +28,7 @@ import { mergeMap, take } from 'rxjs/operators';
 export class RoleDetailComponent extends BaseDetailComponent<Role> implements OnInit, OnDestroy {
     role$: Observable<Role>;
     detailForm: FormGroup;
-    permissionDefinitions$: Observable<PermissionDefinition[]>;
+    permissionDefinitions: PermissionDefinition[];
     constructor(
         router: Router,
         route: ActivatedRoute,
@@ -50,9 +50,7 @@ export class RoleDetailComponent extends BaseDetailComponent<Role> implements On
     ngOnInit() {
         this.init();
         this.role$ = this.entity$;
-        this.permissionDefinitions$ = this.dataService.settings
-            .getGlobalSettings('cache-and-network')
-            .mapSingle(({ globalSettings }) => globalSettings.serverConfig.permissions);
+        this.permissionDefinitions = this.serverConfigService.getPermissionDefinitions();
     }
 
     ngOnDestroy(): void {

Some files were not shown because too many files changed in this diff