Browse Source

Refactoring

pull/7146/head
Thomas Kaul 3 weeks ago
parent
commit
d3cce8977c
  1. 14
      apps/api/src/app/access/access.controller.ts
  2. 7
      apps/api/src/app/access/access.service.ts
  3. 13
      apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts

14
apps/api/src/app/access/access.controller.ts

@ -21,7 +21,7 @@ import {
} from '@nestjs/common'; } from '@nestjs/common';
import { REQUEST } from '@nestjs/core'; import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport'; import { AuthGuard } from '@nestjs/passport';
import { Access as AccessModel, Prisma } from '@prisma/client'; import { Access as AccessModel } from '@prisma/client';
import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { AccessService } from './access.service'; import { AccessService } from './access.service';
@ -87,17 +87,13 @@ export class AccessController {
} }
try { try {
const settings: AccessSettings = data.filters?.length
? { filters: data.filters }
: {};
return this.accessService.createAccess({ return this.accessService.createAccess({
alias: data.alias || undefined, alias: data.alias || undefined,
granteeUser: data.granteeUserId granteeUser: data.granteeUserId
? { connect: { id: data.granteeUserId } } ? { connect: { id: data.granteeUserId } }
: undefined, : undefined,
permissions: data.permissions, permissions: data.permissions,
settings: settings as Prisma.InputJsonValue, settings: this.accessService.buildSettings(data.filters),
user: { connect: { id: this.request.user.id } } user: { connect: { id: this.request.user.id } }
}); });
} catch { } catch {
@ -159,10 +155,6 @@ export class AccessController {
} }
try { try {
const settings: AccessSettings = data.filters?.length
? { filters: data.filters }
: {};
return this.accessService.updateAccess({ return this.accessService.updateAccess({
data: { data: {
alias: data.alias, alias: data.alias,
@ -170,7 +162,7 @@ export class AccessController {
? { connect: { id: data.granteeUserId } } ? { connect: { id: data.granteeUserId } }
: { disconnect: true }, : { disconnect: true },
permissions: data.permissions, permissions: data.permissions,
settings: settings as Prisma.InputJsonValue settings: this.accessService.buildSettings(data.filters)
}, },
where: { id } where: { id }
}); });

7
apps/api/src/app/access/access.service.ts

@ -1,4 +1,5 @@
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { AccessSettings, Filter } from '@ghostfolio/common/interfaces';
import { AccessWithGranteeUser } from '@ghostfolio/common/types'; import { AccessWithGranteeUser } from '@ghostfolio/common/types';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
@ -39,6 +40,12 @@ export class AccessService {
}); });
} }
public buildSettings(filters?: Filter[]) {
const settings: AccessSettings = filters?.length ? { filters } : {};
return settings as Prisma.InputJsonValue;
}
public async createAccess(data: Prisma.AccessCreateInput): Promise<Access> { public async createAccess(data: Prisma.AccessCreateInput): Promise<Access> {
return this.prismaService.access.create({ return this.prismaService.access.create({
data data

13
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts

@ -25,7 +25,6 @@ import {
} from '@angular/core'; } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { import {
AbstractControl,
FormBuilder, FormBuilder,
FormGroup, FormGroup,
FormsModule, FormsModule,
@ -143,9 +142,7 @@ export class GfCreateOrUpdateAccessDialogComponent implements OnInit {
const permissionsControl = this.accessForm.get('permissions'); const permissionsControl = this.accessForm.get('permissions');
if (accessType === 'PRIVATE') { if (accessType === 'PRIVATE') {
granteeUserIdControl?.setValidators([ granteeUserIdControl?.setValidators(Validators.required);
(control: AbstractControl) => Validators.required(control)
]);
this.accessForm.get('filters')?.setValue(null); this.accessForm.get('filters')?.setValue(null);
} else { } else {
granteeUserIdControl?.clearValidators(); granteeUserIdControl?.clearValidators();
@ -153,10 +150,6 @@ export class GfCreateOrUpdateAccessDialogComponent implements OnInit {
permissionsControl?.setValue( permissionsControl?.setValue(
access?.permissions[0] ?? AccessPermission.READ_RESTRICTED access?.permissions[0] ?? AccessPermission.READ_RESTRICTED
); );
if (this.canApplyFilters) {
this.loadHoldings();
}
} }
granteeUserIdControl?.updateValueAndValidity(); granteeUserIdControl?.updateValueAndValidity();
@ -164,9 +157,7 @@ export class GfCreateOrUpdateAccessDialogComponent implements OnInit {
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
}); });
if (this.canApplyFilters) { this.loadHoldings();
this.loadHoldings();
}
} }
protected onCancel() { protected onCancel() {

Loading…
Cancel
Save