Browse Source

Refactoring

pull/5923/head
David Requeno 1 month ago
parent
commit
627a58ffe0
  1. 4
      apps/client/src/app/components/admin-users/admin-users.component.ts
  2. 23
      apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts
  3. 13
      apps/client/src/app/services/admin.service.ts

4
apps/client/src/app/components/admin-users/admin-users.component.ts

@ -289,10 +289,10 @@ export class GfAdminUsersComponent implements OnDestroy, OnInit {
>(GfUserDetailDialogComponent, { >(GfUserDetailDialogComponent, {
autoFocus: false, autoFocus: false,
data: { data: {
userId: aUserId,
deviceType: this.deviceType, deviceType: this.deviceType,
hasPermissionForSubscription: this.hasPermissionForSubscription, hasPermissionForSubscription: this.hasPermissionForSubscription,
locale: this.user?.settings?.locale locale: this.user?.settings?.locale,
userId: aUserId
}, },
height: this.deviceType === 'mobile' ? '98vh' : '60vh', height: this.deviceType === 'mobile' ? '98vh' : '60vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem' width: this.deviceType === 'mobile' ? '100vw' : '50rem'

23
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts

@ -6,14 +6,14 @@ import {
ChangeDetectionStrategy, ChangeDetectionStrategy,
Component, Component,
CUSTOM_ELEMENTS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA,
OnInit,
Inject, Inject,
OnDestroy OnDestroy,
OnInit
} from '@angular/core'; } from '@angular/core';
import { MatButtonModule } from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { MatDialogModule } 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 { catchError, finalize, takeUntil } from 'rxjs/operators';
import { NotificationService } from '../../core/notification/notification.service'; import { NotificationService } from '../../core/notification/notification.service';
@ -38,32 +38,35 @@ import { UserDetailDialogParams } from './interfaces/interfaces';
styleUrls: ['./user-detail-dialog.component.scss'], styleUrls: ['./user-detail-dialog.component.scss'],
templateUrl: './user-detail-dialog.html' templateUrl: './user-detail-dialog.html'
}) })
export class GfUserDetailDialogComponent implements OnInit, OnDestroy { export class GfUserDetailDialogComponent implements OnDestroy, OnInit {
private unsubscribeSubject = new Subject<void>();
public isLoading = true; public isLoading = true;
public user: AdminUserResponse; public user: AdminUserResponse;
private unsubscribeSubject = new Subject<void>();
public constructor( public constructor(
@Inject(MAT_DIALOG_DATA) public data: UserDetailDialogParams, @Inject(MAT_DIALOG_DATA) public data: UserDetailDialogParams,
public dialogRef: MatDialogRef<GfUserDetailDialogComponent>,
private adminService: AdminService, private adminService: AdminService,
private notificationService: NotificationService private notificationService: NotificationService,
public dialogRef: MatDialogRef<GfUserDetailDialogComponent>
) {} ) {}
public ngOnInit(): void { public ngOnInit() {
this.adminService this.adminService
.fetchUserById(this.data.userId) .fetchUserById(this.data.userId)
.pipe( .pipe(
takeUntil(this.unsubscribeSubject), takeUntil(this.unsubscribeSubject),
finalize(() => (this.isLoading = false)),
catchError(() => { catchError(() => {
this.notificationService.alert({ this.notificationService.alert({
title: $localize`User`, title: $localize`User`,
message: $localize`Unable to load user` message: $localize`Unable to load user`
}); });
this.dialogRef.close(); this.dialogRef.close();
return EMPTY; return EMPTY;
}) }),
finalize(() => (this.isLoading = false))
) )
.subscribe((user) => { .subscribe((user) => {
this.user = user; this.user = user;

13
apps/client/src/app/services/admin.service.ts

@ -8,11 +8,12 @@ import {
} from '@ghostfolio/common/config'; } from '@ghostfolio/common/config';
import { DEFAULT_PAGE_SIZE } from '@ghostfolio/common/config'; import { DEFAULT_PAGE_SIZE } from '@ghostfolio/common/config';
import { import {
AssetProfileIdentifier,
AdminData, AdminData,
AdminJobs, AdminJobs,
AdminMarketData, AdminMarketData,
AdminUserResponse,
AdminUsersResponse, AdminUsersResponse,
AssetProfileIdentifier,
DataProviderGhostfolioStatusResponse, DataProviderGhostfolioStatusResponse,
EnhancedSymbolProfile, EnhancedSymbolProfile,
Filter Filter
@ -142,6 +143,10 @@ export class AdminService {
return this.http.get<Platform[]>('/api/v1/platform'); return this.http.get<Platform[]>('/api/v1/platform');
} }
public fetchUserById(id: string) {
return this.http.get<AdminUserResponse>(`/api/v1/admin/user/${id}`);
}
public fetchUsers({ public fetchUsers({
skip, skip,
take = DEFAULT_PAGE_SIZE take = DEFAULT_PAGE_SIZE
@ -157,12 +162,6 @@ export class AdminService {
return this.http.get<AdminUsersResponse>('/api/v1/admin/user', { params }); return this.http.get<AdminUsersResponse>('/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() { public gather7Days() {
return this.http.post<void>('/api/v1/admin/gather', {}); return this.http.post<void>('/api/v1/admin/gather', {});
} }

Loading…
Cancel
Save