From 627a58ffe08d45720f695a6f43046632b1f7270e Mon Sep 17 00:00:00 2001 From: David Requeno Date: Wed, 12 Nov 2025 23:19:38 -0600 Subject: [PATCH] Refactoring --- .../admin-users/admin-users.component.ts | 4 ++-- .../user-detail-dialog.component.ts | 23 +++++++++++-------- apps/client/src/app/services/admin.service.ts | 13 +++++------ 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/apps/client/src/app/components/admin-users/admin-users.component.ts b/apps/client/src/app/components/admin-users/admin-users.component.ts index f4fceccb9..4084124cf 100644 --- a/apps/client/src/app/components/admin-users/admin-users.component.ts +++ b/apps/client/src/app/components/admin-users/admin-users.component.ts @@ -289,10 +289,10 @@ export class GfAdminUsersComponent implements OnDestroy, OnInit { >(GfUserDetailDialogComponent, { autoFocus: false, data: { - userId: aUserId, deviceType: this.deviceType, hasPermissionForSubscription: this.hasPermissionForSubscription, - locale: this.user?.settings?.locale + locale: this.user?.settings?.locale, + userId: aUserId }, height: this.deviceType === 'mobile' ? '98vh' : '60vh', width: this.deviceType === 'mobile' ? '100vw' : '50rem' diff --git a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts index ef3a8589d..2aa741699 100644 --- a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts +++ b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts @@ -6,14 +6,14 @@ import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, - OnInit, Inject, - OnDestroy + OnDestroy, + OnInit } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { MatDialogModule } from '@angular/material/dialog'; -import { Subject, EMPTY } from 'rxjs'; +import { EMPTY, Subject } from 'rxjs'; import { catchError, finalize, takeUntil } from 'rxjs/operators'; import { NotificationService } from '../../core/notification/notification.service'; @@ -38,32 +38,35 @@ import { UserDetailDialogParams } from './interfaces/interfaces'; styleUrls: ['./user-detail-dialog.component.scss'], templateUrl: './user-detail-dialog.html' }) -export class GfUserDetailDialogComponent implements OnInit, OnDestroy { - private unsubscribeSubject = new Subject(); +export class GfUserDetailDialogComponent implements OnDestroy, OnInit { public isLoading = true; public user: AdminUserResponse; + private unsubscribeSubject = new Subject(); + public constructor( @Inject(MAT_DIALOG_DATA) public data: UserDetailDialogParams, - public dialogRef: MatDialogRef, private adminService: AdminService, - private notificationService: NotificationService + private notificationService: NotificationService, + public dialogRef: MatDialogRef ) {} - public ngOnInit(): void { + public ngOnInit() { this.adminService .fetchUserById(this.data.userId) .pipe( takeUntil(this.unsubscribeSubject), - finalize(() => (this.isLoading = false)), catchError(() => { this.notificationService.alert({ title: $localize`User`, message: $localize`Unable to load user` }); + this.dialogRef.close(); + return EMPTY; - }) + }), + finalize(() => (this.isLoading = false)) ) .subscribe((user) => { this.user = user; diff --git a/apps/client/src/app/services/admin.service.ts b/apps/client/src/app/services/admin.service.ts index cd11a4c22..cdac3ed38 100644 --- a/apps/client/src/app/services/admin.service.ts +++ b/apps/client/src/app/services/admin.service.ts @@ -8,11 +8,12 @@ import { } from '@ghostfolio/common/config'; import { DEFAULT_PAGE_SIZE } from '@ghostfolio/common/config'; import { - AssetProfileIdentifier, AdminData, AdminJobs, AdminMarketData, + AdminUserResponse, AdminUsersResponse, + AssetProfileIdentifier, DataProviderGhostfolioStatusResponse, EnhancedSymbolProfile, Filter @@ -142,6 +143,10 @@ export class AdminService { return this.http.get('/api/v1/platform'); } + public fetchUserById(id: string) { + return this.http.get(`/api/v1/admin/user/${id}`); + } + public fetchUsers({ skip, take = DEFAULT_PAGE_SIZE @@ -157,12 +162,6 @@ export class AdminService { return this.http.get('/api/v1/admin/user', { params }); } - public fetchUserById(id: string) { - return this.http.get< - import('@ghostfolio/common/interfaces').AdminUserResponse - >(`/api/v1/admin/user/${id}`); - } - public gather7Days() { return this.http.post('/api/v1/admin/gather', {}); }