You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
abp/npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts

45 lines
1.5 KiB

import { State, Action, StateContext, Selector } from '@ngxs/store';
import { GetPermissions, UpdatePermissions } from '../actions/permission-management.actions';
import { PermissionManagement } from '../models/permission-management';
import { PermissionManagementService } from '../services/permission-management.service';
import { tap } from 'rxjs/operators';
import { Injectable } from '@angular/core';
@State<PermissionManagement.State>({
name: 'PermissionManagementState',
defaults: { permissionRes: {} } as PermissionManagement.State,
})
@Injectable()
export class PermissionManagementState {
@Selector()
static getPermissionGroups({ permissionRes }: PermissionManagement.State) {
return permissionRes.groups || [];
}
@Selector()
static getEntityDisplayName({ permissionRes }: PermissionManagement.State): string {
return permissionRes.entityDisplayName;
}
constructor(private permissionManagementService: PermissionManagementService) {}
@Action(GetPermissions)
permissionManagementGet(
{ patchState }: StateContext<PermissionManagement.State>,
{ payload }: GetPermissions,
) {
return this.permissionManagementService.getPermissions(payload).pipe(
tap(permissionResponse =>
patchState({
permissionRes: permissionResponse,
}),
),
);
}
@Action(UpdatePermissions)
permissionManagementUpdate(_, { payload }: UpdatePermissions) {
return this.permissionManagementService.updatePermissions(payload);
}
}