diff --git a/ui/src/app/admin/admin.component.ts b/ui/src/app/admin/admin.component.ts index 038d281b8..b3314e7ec 100644 --- a/ui/src/app/admin/admin.component.ts +++ b/ui/src/app/admin/admin.component.ts @@ -1,21 +1,10 @@ -import { Component, OnInit } from '@angular/core'; -import { LoadRoleRequest } from '../core/action/configuration.action'; - -import * as fromRoot from '../app.reducer'; -import { Store } from '@ngrx/store'; -import { LoadAdminRequest } from './action/collection.action'; +import { Component } from '@angular/core'; @Component({ selector: 'admin-page', templateUrl: './admin.component.html', styleUrls: [] }) -export class AdminComponent implements OnInit { - constructor( - private store: Store - ) { } - - ngOnInit(): void { - this.store.dispatch(new LoadAdminRequest()); - } +export class AdminComponent { + constructor() { } } diff --git a/ui/src/app/admin/container/action-required.component.ts b/ui/src/app/admin/container/action-required.component.ts index 8f7aab548..e920c81e1 100644 --- a/ui/src/app/admin/container/action-required.component.ts +++ b/ui/src/app/admin/container/action-required.component.ts @@ -15,5 +15,7 @@ export class ActionRequiredPageComponent { constructor( private store: Store - ) {} + ) { + this.store.dispatch(new LoadNewUsersRequest()); + } } diff --git a/ui/src/app/admin/container/admin-management.component.ts b/ui/src/app/admin/container/admin-management.component.ts index 2773eadc2..e9dd5ff68 100644 --- a/ui/src/app/admin/container/admin-management.component.ts +++ b/ui/src/app/admin/container/admin-management.component.ts @@ -15,5 +15,7 @@ export class AdminManagementPageComponent { constructor( private store: Store - ) {} + ) { + this.store.dispatch(new LoadAdminRequest()); + } } diff --git a/ui/src/app/admin/effect/collection.effect.ts b/ui/src/app/admin/effect/collection.effect.ts index 410166ed5..84d2aa3f2 100644 --- a/ui/src/app/admin/effect/collection.effect.ts +++ b/ui/src/app/admin/effect/collection.effect.ts @@ -15,6 +15,8 @@ import { LoadNewUsersRequest } from '../action/collection.action'; import { AdminService } from '../service/admin.service'; +import { AddNotification } from '../../notification/action/notification.action'; +import { Notification, NotificationType } from '../../notification/model/notification'; /* istanbul ignore next */ @@ -32,7 +34,7 @@ export class AdminCollectionEffects { @Effect() loadNewUsersRequest$ = this.actions$.pipe( ofType(AdminCollectionActionTypes.LOAD_NEW_USERS_REQUEST), - switchMap(() => this.adminService.query().pipe( + switchMap(() => this.adminService.queryByRole('ROLE_NONE').pipe( map(users => new LoadAdminSuccess(users)) )) ); @@ -49,6 +51,19 @@ export class AdminCollectionEffects { )) ); + @Effect() + updateAdminRoleSuccess$ = this.actions$.pipe( + ofType(AdminCollectionActionTypes.UPDATE_ADMIN_SUCCESS), + map(action => action.payload), + map(user => new AddNotification( + new Notification( + NotificationType.Success, + `User update successful for ${ user.changes.username }`, + 5000 + ) + )) + ); + @Effect() removeAdminRequest$ = this.actions$.pipe( ofType(AdminCollectionActionTypes.REMOVE_ADMIN_REQUEST), @@ -64,6 +79,19 @@ export class AdminCollectionEffects { map(action => new LoadAdminRequest()) ); + @Effect() + deleteAdminRoleSuccess$ = this.actions$.pipe( + ofType(AdminCollectionActionTypes.REMOVE_ADMIN_SUCCESS), + map(action => action.payload), + map(user => new AddNotification( + new Notification( + NotificationType.Success, + `User deleted.`, + 5000 + ) + )) + ); + constructor( private actions$: Actions, private adminService: AdminService, diff --git a/ui/src/app/admin/service/admin.service.ts b/ui/src/app/admin/service/admin.service.ts index 7226f3de2..452cc8f7a 100644 --- a/ui/src/app/admin/service/admin.service.ts +++ b/ui/src/app/admin/service/admin.service.ts @@ -22,6 +22,14 @@ export class AdminService { ); } + queryByRole(role: string): Observable { + return this.http.get( + `${this.base}${this.endpoint}/role/${role}`, {} + ).pipe( + map(users => users.map(u => new AdminEntity(u))) + ); + } + update(user: Admin): Observable { return this.http.patch( `${this.base}${this.endpoint}/${user.username}`, {...user} diff --git a/ui/src/app/dashboard/container/dashboard.component.ts b/ui/src/app/dashboard/container/dashboard.component.ts index 56a7013fe..9e30a7cf9 100644 --- a/ui/src/app/dashboard/container/dashboard.component.ts +++ b/ui/src/app/dashboard/container/dashboard.component.ts @@ -24,8 +24,6 @@ export class DashboardPageComponent { ) { this.actionsRequired$ = this.store.select(fromAdmin.getTotalActionsRequired); this.hasActions$ = this.actionsRequired$.pipe(map(a => a > 0)); - - this.store.dispatch(new LoadAdminRequest()); this.store.dispatch(new LoadRoleRequest()); } } diff --git a/ui/src/app/notification/model/notification.ts b/ui/src/app/notification/model/notification.ts index 7668d593d..4c7b237cd 100644 --- a/ui/src/app/notification/model/notification.ts +++ b/ui/src/app/notification/model/notification.ts @@ -9,7 +9,7 @@ export class Notification { } export enum NotificationType { - Success = 'alert-succes', + Success = 'alert-success', Info = 'alert-info', Warning = 'alert-warning', Danger = 'alert-danger'