Browse Source

Refactoring

pull/4016/head
Thomas Kaul 9 months ago
parent
commit
bba10c32a7
  1. 14
      apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts
  2. 4
      apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts
  3. 4
      apps/api/src/services/data-provider/data-provider.service.ts
  4. 6
      apps/client/src/app/components/admin-settings/admin-settings.component.html
  5. 6
      apps/client/src/app/components/admin-settings/admin-settings.component.ts
  6. 4
      apps/client/src/app/services/admin.service.ts

14
apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts

@ -1,7 +1,5 @@
import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator';
import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard';
import { PropertyService } from '@ghostfolio/api/services/property/property.service';
import { PROPERTY_API_KEY_GHOSTFOLIO } from '@ghostfolio/common/config';
import { parseDate } from '@ghostfolio/common/helper'; import { parseDate } from '@ghostfolio/common/helper';
import { import {
DataProviderGhostfolioStatusResponse, DataProviderGhostfolioStatusResponse,
@ -33,7 +31,6 @@ import { GhostfolioService } from './ghostfolio.service';
export class GhostfolioController { export class GhostfolioController {
public constructor( public constructor(
private readonly ghostfolioService: GhostfolioService, private readonly ghostfolioService: GhostfolioService,
private readonly propertyService: PropertyService,
@Inject(REQUEST) private readonly request: RequestWithUser @Inject(REQUEST) private readonly request: RequestWithUser
) {} ) {}
@ -153,17 +150,6 @@ export class GhostfolioController {
@HasPermission(permissions.enableDataProviderGhostfolio) @HasPermission(permissions.enableDataProviderGhostfolio)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
public async getStatus(): Promise<DataProviderGhostfolioStatusResponse> { public async getStatus(): Promise<DataProviderGhostfolioStatusResponse> {
const ghostfolioApiKey = (await this.propertyService.getByKey(
PROPERTY_API_KEY_GHOSTFOLIO
)) as string;
if (!ghostfolioApiKey) {
throw new HttpException(
getReasonPhrase(StatusCodes.SERVICE_UNAVAILABLE),
StatusCodes.SERVICE_UNAVAILABLE
);
}
return { return {
dailyRequests: this.request.user.dataProviderGhostfolioDailyRequests, dailyRequests: this.request.user.dataProviderGhostfolioDailyRequests,
dailyRequestsMax: await this.ghostfolioService.getMaxDailyRequests() dailyRequestsMax: await this.ghostfolioService.getMaxDailyRequests()

4
apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts

@ -202,11 +202,11 @@ export class GhostfolioService {
const searchResults = await Promise.all(promises); const searchResults = await Promise.all(promises);
searchResults.forEach(({ items }) => { for (const { items } of searchResults) {
if (items?.length > 0) { if (items?.length > 0) {
lookupItems = lookupItems.concat(items); lookupItems = lookupItems.concat(items);
} }
}); }
const filteredItems = lookupItems const filteredItems = lookupItems
.filter(({ currency }) => { .filter(({ currency }) => {

4
apps/api/src/services/data-provider/data-provider.service.ts

@ -625,11 +625,11 @@ export class DataProviderService {
const searchResults = await Promise.all(promises); const searchResults = await Promise.all(promises);
searchResults.forEach(({ items }) => { for (const { items } of searchResults) {
if (items?.length > 0) { if (items?.length > 0) {
lookupItems = lookupItems.concat(items); lookupItems = lookupItems.concat(items);
} }
}); }
const filteredItems = lookupItems const filteredItems = lookupItems
.filter(({ currency }) => { .filter(({ currency }) => {

6
apps/client/src/app/components/admin-settings/admin-settings.component.html

@ -11,7 +11,7 @@
target="_blank" target="_blank"
[href]="pricingUrl" [href]="pricingUrl"
> >
@if (hasGhostfolioApiKey === false) { @if (isGhostfolioApiKeyValid === false) {
<span class="badge badge-warning mr-1" i18n>NEW</span> <span class="badge badge-warning mr-1" i18n>NEW</span>
} }
Ghostfolio Premium Ghostfolio Premium
@ -22,7 +22,7 @@
</a> </a>
</div> </div>
<div class="w-50"> <div class="w-50">
@if (hasGhostfolioApiKey === true) { @if (isGhostfolioApiKeyValid === true) {
<div class="align-items-center d-flex flex-wrap"> <div class="align-items-center d-flex flex-wrap">
<div class="mr-3"> <div class="mr-3">
{{ ghostfolioApiStatus.dailyRequests }} {{ ghostfolioApiStatus.dailyRequests }}
@ -38,7 +38,7 @@
<span i18n>Remove API key</span> <span i18n>Remove API key</span>
</button> </button>
</div> </div>
} @else if (hasGhostfolioApiKey === false) { } @else if (isGhostfolioApiKeyValid === false) {
<button <button
color="accent" color="accent"
mat-flat-button mat-flat-button

6
apps/client/src/app/components/admin-settings/admin-settings.component.ts

@ -30,7 +30,7 @@ import { GfGhostfolioPremiumApiDialogComponent } from './ghostfolio-premium-api-
}) })
export class AdminSettingsComponent implements OnDestroy, OnInit { export class AdminSettingsComponent implements OnDestroy, OnInit {
public ghostfolioApiStatus: DataProviderGhostfolioStatusResponse; public ghostfolioApiStatus: DataProviderGhostfolioStatusResponse;
public hasGhostfolioApiKey: boolean; public isGhostfolioApiKeyValid: boolean;
public pricingUrl: string; public pricingUrl: string;
private deviceType: string; private deviceType: string;
@ -113,7 +113,7 @@ export class AdminSettingsComponent implements OnDestroy, OnInit {
.fetchGhostfolioDataProviderStatus() .fetchGhostfolioDataProviderStatus()
.pipe( .pipe(
catchError(() => { catchError(() => {
this.hasGhostfolioApiKey = false; this.isGhostfolioApiKeyValid = false;
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
@ -126,7 +126,7 @@ export class AdminSettingsComponent implements OnDestroy, OnInit {
) )
.subscribe((status) => { .subscribe((status) => {
this.ghostfolioApiStatus = status; this.ghostfolioApiStatus = status;
this.hasGhostfolioApiKey = true; this.isGhostfolioApiKeyValid = true;
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
}); });

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

@ -18,9 +18,9 @@ import {
AdminMarketData, AdminMarketData,
AdminMarketDataDetails, AdminMarketDataDetails,
AdminUsers, AdminUsers,
DataProviderGhostfolioStatusResponse,
EnhancedSymbolProfile, EnhancedSymbolProfile,
Filter, Filter
DataProviderGhostfolioStatusResponse
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { HttpClient, HttpParams } from '@angular/common/http'; import { HttpClient, HttpParams } from '@angular/common/http';

Loading…
Cancel
Save