import { Component, OnInit } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { SpinnerService } from '@core/services/spinner.service'; import { FooterState } from '@core/states/footer.state'; import { PermissionSet } from '@core/typings/permission.typing'; import { BaseRole, DetachedPermissionSet, RoleToSave } from '@core/typings/roles.typing'; import { RolesService } from '@features/roles/roles.service'; import { TypeaheadSelectOption } from '@yourcause/common'; import { AnalyticsService, EventType } from '@yourcause/common/analytics'; import { RolesAndPermissionsPlatformService } from '../roles-and-permissions.service'; @Component({ selector: 'gc-platform-role-detail-wrapper', templateUrl: './platform-role-detail-wrapper.component.html', styleUrls: ['./platform-role-detail-wrapper.component.scss'] }) export class PlatformRoleDetailWrapperComponent implements OnInit { roleId = this.activatedRoute.snapshot.params.id; role: BaseRole; permissionSets: DetachedPermissionSet[]; permissionTypeOptions: TypeaheadSelectOption[]; constructor ( private activatedRoute: ActivatedRoute, private rolesAndPermissionService: RolesAndPermissionsPlatformService, private spinnerService: SpinnerService, private footerState: FooterState, private router: Router, private rolesService: RolesService, private analyticsService: AnalyticsService ) { } ngOnInit () { this.role = !this.roleId ? this.rolesService.getBlankRole() : this.rolesAndPermissionService.getRoleById(+this.roleId); this.permissionSets = this.rolesAndPermissionService.getPermissionSets(); this.permissionTypeOptions = this.rolesAndPermissionService.getPermissionSetOptions(); } async saveRole (roleToSave: RoleToSave) { this.spinnerService.startSpinner(); this.footerState.set('footerActionDisabled', true); await this.rolesAndPermissionService.saveRole(roleToSave); this.footerState.set('footerActionDisabled', false); this.spinnerService.stopSpinner(); this.analyticsService.emitEvent({ eventType: EventType.Click, eventName: 'Save role', extras: null }); this.router.navigateByUrl('/platform/admin-settings/roles-and-permissions'); } }