Browse Source

Task/move admin service to UI library (#6159)

* Move admin service to UI library

* Update changelog
pull/6161/head
Kenrick Tandrian 3 days ago
committed by GitHub
parent
commit
d4d6ce1d07
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 2
      apps/client/src/app/components/admin-jobs/admin-jobs.component.ts
  3. 3
      apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
  4. 2
      apps/client/src/app/components/admin-market-data/admin-market-data.service.ts
  5. 3
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
  6. 3
      apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts
  7. 3
      apps/client/src/app/components/admin-overview/admin-overview.component.ts
  8. 3
      apps/client/src/app/components/admin-platform/admin-platform.component.ts
  9. 3
      apps/client/src/app/components/admin-settings/admin-settings.component.ts
  10. 3
      apps/client/src/app/components/admin-users/admin-users.component.ts
  11. 2
      apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts
  12. 4
      apps/client/src/environments/environment.prod.ts
  13. 4
      apps/client/src/environments/environment.ts
  14. 5
      apps/client/src/main.ts
  15. 4
      eslint.config.cjs
  16. 4
      libs/ui/src/lib/assistant/assistant.component.ts
  17. 5
      libs/ui/src/lib/environment/environment.interface.ts
  18. 7
      libs/ui/src/lib/environment/environment.token.ts
  19. 2
      libs/ui/src/lib/environment/index.ts
  20. 4
      libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts
  21. 10
      libs/ui/src/lib/services/admin.service.ts
  22. 1
      libs/ui/src/lib/services/index.ts

1
CHANGELOG.md

@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Deprecated `activities` in the endpoint `GET api/v1/portfolio/holding/:dataSource/:symbol`
- Moved the admin service to `@ghostfolio/ui/services`
- Moved the data service to `@ghostfolio/ui/services`
- Refactored the dividend import

2
apps/client/src/app/components/admin-jobs/admin-jobs.component.ts

@ -1,4 +1,3 @@
import { AdminService } from '@ghostfolio/client/services/admin.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import {
DATA_GATHERING_QUEUE_PRIORITY_HIGH,
@ -9,6 +8,7 @@ import {
import { getDateWithTimeFormatString } from '@ghostfolio/common/helper';
import { AdminJobs, User } from '@ghostfolio/common/interfaces';
import { NotificationService } from '@ghostfolio/ui/notifications';
import { AdminService } from '@ghostfolio/ui/services';
import { CommonModule } from '@angular/common';
import {

3
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts

@ -1,4 +1,3 @@
import { AdminService } from '@ghostfolio/client/services/admin.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import {
DEFAULT_PAGE_SIZE,
@ -17,7 +16,7 @@ import { GfSymbolPipe } from '@ghostfolio/common/pipes';
import { GfActivitiesFilterComponent } from '@ghostfolio/ui/activities-filter';
import { translate } from '@ghostfolio/ui/i18n';
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { DataService } from '@ghostfolio/ui/services';
import { AdminService, DataService } from '@ghostfolio/ui/services';
import { GfValueComponent } from '@ghostfolio/ui/value';
import { SelectionModel } from '@angular/cdk/collections';

2
apps/client/src/app/components/admin-market-data/admin-market-data.service.ts

@ -1,4 +1,3 @@
import { AdminService } from '@ghostfolio/client/services/admin.service';
import { ghostfolioScraperApiSymbolPrefix } from '@ghostfolio/common/config';
import { ConfirmationDialogType } from '@ghostfolio/common/enums';
import {
@ -11,6 +10,7 @@ import {
AdminMarketDataItem
} from '@ghostfolio/common/interfaces';
import { NotificationService } from '@ghostfolio/ui/notifications';
import { AdminService } from '@ghostfolio/ui/services';
import { Injectable } from '@angular/core';
import { EMPTY, catchError, finalize, forkJoin } from 'rxjs';

3
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts

@ -1,5 +1,4 @@
import { AdminMarketDataService } from '@ghostfolio/client/components/admin-market-data/admin-market-data.service';
import { AdminService } from '@ghostfolio/client/services/admin.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import {
ASSET_CLASS_MAPPING,
@ -24,7 +23,7 @@ import { translate } from '@ghostfolio/ui/i18n';
import { GfLineChartComponent } from '@ghostfolio/ui/line-chart';
import { NotificationService } from '@ghostfolio/ui/notifications';
import { GfPortfolioProportionChartComponent } from '@ghostfolio/ui/portfolio-proportion-chart';
import { DataService } from '@ghostfolio/ui/services';
import { AdminService, DataService } from '@ghostfolio/ui/services';
import { GfSymbolAutocompleteComponent } from '@ghostfolio/ui/symbol-autocomplete';
import { GfValueComponent } from '@ghostfolio/ui/value';

3
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts

@ -1,10 +1,9 @@
import { AdminService } from '@ghostfolio/client/services/admin.service';
import {
DEFAULT_CURRENCY,
ghostfolioPrefix,
PROPERTY_CURRENCIES
} from '@ghostfolio/common/config';
import { DataService } from '@ghostfolio/ui/services';
import { AdminService, DataService } from '@ghostfolio/ui/services';
import { GfSymbolAutocompleteComponent } from '@ghostfolio/ui/symbol-autocomplete';
import {

3
apps/client/src/app/components/admin-overview/admin-overview.component.ts

@ -1,4 +1,3 @@
import { AdminService } from '@ghostfolio/client/services/admin.service';
import { CacheService } from '@ghostfolio/client/services/cache.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import {
@ -19,7 +18,7 @@ import {
} from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { NotificationService } from '@ghostfolio/ui/notifications';
import { DataService } from '@ghostfolio/ui/services';
import { AdminService, DataService } from '@ghostfolio/ui/services';
import { GfValueComponent } from '@ghostfolio/ui/value';
import { CommonModule } from '@angular/common';

3
apps/client/src/app/components/admin-platform/admin-platform.component.ts

@ -1,10 +1,9 @@
import { AdminService } from '@ghostfolio/client/services/admin.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { CreatePlatformDto, UpdatePlatformDto } from '@ghostfolio/common/dtos';
import { ConfirmationDialogType } from '@ghostfolio/common/enums';
import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo';
import { NotificationService } from '@ghostfolio/ui/notifications';
import { DataService } from '@ghostfolio/ui/services';
import { AdminService, DataService } from '@ghostfolio/ui/services';
import {
ChangeDetectionStrategy,

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

@ -1,7 +1,6 @@
import { GfAdminPlatformComponent } from '@ghostfolio/client/components/admin-platform/admin-platform.component';
import { GfAdminTagComponent } from '@ghostfolio/client/components/admin-tag/admin-tag.component';
import { GfDataProviderStatusComponent } from '@ghostfolio/client/components/data-provider-status/data-provider-status.component';
import { AdminService } from '@ghostfolio/client/services/admin.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { PROPERTY_API_KEY_GHOSTFOLIO } from '@ghostfolio/common/config';
import { ConfirmationDialogType } from '@ghostfolio/common/enums';
@ -15,7 +14,7 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo';
import { NotificationService } from '@ghostfolio/ui/notifications';
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { DataService } from '@ghostfolio/ui/services';
import { AdminService, DataService } from '@ghostfolio/ui/services';
import { GfValueComponent } from '@ghostfolio/ui/value';
import { CommonModule } from '@angular/common';

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

@ -1,6 +1,5 @@
import { UserDetailDialogParams } from '@ghostfolio/client/components/user-detail-dialog/interfaces/interfaces';
import { GfUserDetailDialogComponent } from '@ghostfolio/client/components/user-detail-dialog/user-detail-dialog.component';
import { AdminService } from '@ghostfolio/client/services/admin.service';
import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service';
import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
@ -20,7 +19,7 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { internalRoutes } from '@ghostfolio/common/routes/routes';
import { NotificationService } from '@ghostfolio/ui/notifications';
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { DataService } from '@ghostfolio/ui/services';
import { AdminService, DataService } from '@ghostfolio/ui/services';
import { GfValueComponent } from '@ghostfolio/ui/value';
import { CommonModule } from '@angular/common';

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

@ -1,7 +1,7 @@
import { AdminService } from '@ghostfolio/client/services/admin.service';
import { AdminUserResponse } from '@ghostfolio/common/interfaces';
import { GfDialogFooterComponent } from '@ghostfolio/ui/dialog-footer';
import { GfDialogHeaderComponent } from '@ghostfolio/ui/dialog-header';
import { AdminService } from '@ghostfolio/ui/services';
import { GfValueComponent } from '@ghostfolio/ui/value';
import {

4
apps/client/src/environments/environment.prod.ts

@ -1,4 +1,6 @@
export const environment = {
import type { GfEnvironment } from '@ghostfolio/ui/environment';
export const environment: GfEnvironment = {
lastPublish: '{BUILD_TIMESTAMP}',
production: true,
stripePublicKey: ''

4
apps/client/src/environments/environment.ts

@ -1,8 +1,10 @@
import type { GfEnvironment } from '@ghostfolio/ui/environment';
// This file can be replaced during build by using the `fileReplacements` array.
// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
// The list of file replacements can be found in `angular.json`.
export const environment = {
export const environment: GfEnvironment = {
lastPublish: null,
production: false,
stripePublicKey: ''

5
apps/client/src/main.ts

@ -1,5 +1,6 @@
import { InfoResponse } from '@ghostfolio/common/interfaces';
import { filterGlobalPermissions } from '@ghostfolio/common/permissions';
import { GF_ENVIRONMENT } from '@ghostfolio/ui/environment';
import { GfNotificationModule } from '@ghostfolio/ui/notifications';
import { Platform } from '@angular/cdk/platform';
@ -89,6 +90,10 @@ import { environment } from './environments/environment';
provide: DateAdapter,
useClass: CustomDateAdapter
},
{
provide: GF_ENVIRONMENT,
useValue: environment
},
{
provide: MAT_DATE_FORMATS,
useValue: DateFormats

4
eslint.config.cjs

@ -28,9 +28,7 @@ module.exports = [
onlyDependOnLibsWithTags: ['*']
}
],
enforceBuildableLibDependency: true,
// Temporary fix, should be removed eventually
ignoredCircularDependencies: [['client', 'ui']]
enforceBuildableLibDependency: true
}
],
'@typescript-eslint/no-extra-semi': 'error',

4
libs/ui/src/lib/assistant/assistant.component.ts

@ -1,11 +1,9 @@
/* eslint-disable @nx/enforce-module-boundaries */
import { AdminService } from '@ghostfolio/client/services/admin.service';
import { getAssetProfileIdentifier } from '@ghostfolio/common/helper';
import { Filter, PortfolioPosition, User } from '@ghostfolio/common/interfaces';
import { InternalRoute } from '@ghostfolio/common/routes/interfaces/internal-route.interface';
import { internalRoutes } from '@ghostfolio/common/routes/routes';
import { AccountWithPlatform, DateRange } from '@ghostfolio/common/types';
import { DataService } from '@ghostfolio/ui/services';
import { AdminService, DataService } from '@ghostfolio/ui/services';
import { FocusKeyManager } from '@angular/cdk/a11y';
import {

5
libs/ui/src/lib/environment/environment.interface.ts

@ -0,0 +1,5 @@
export interface GfEnvironment {
lastPublish: string | null;
production: boolean;
stripePublicKey: string;
}

7
libs/ui/src/lib/environment/environment.token.ts

@ -0,0 +1,7 @@
import { InjectionToken } from '@angular/core';
import { GfEnvironment } from './environment.interface';
export const GF_ENVIRONMENT = new InjectionToken<GfEnvironment>(
'GF_ENVIRONMENT'
);

2
libs/ui/src/lib/environment/index.ts

@ -0,0 +1,2 @@
export * from './environment.interface';
export * from './environment.token';

4
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts

@ -1,6 +1,4 @@
/* eslint-disable @nx/enforce-module-boundaries */
import { AdminService } from '@ghostfolio/client/services/admin.service';
import { DataService } from '@ghostfolio/ui/services';
import { AdminService, DataService } from '@ghostfolio/ui/services';
import {
ChangeDetectionStrategy,

10
apps/client/src/app/services/admin.service.ts → libs/ui/src/lib/services/admin.service.ts

@ -21,22 +21,22 @@ import {
Filter
} from '@ghostfolio/common/interfaces';
import { DateRange } from '@ghostfolio/common/types';
import { GF_ENVIRONMENT, GfEnvironment } from '@ghostfolio/ui/environment';
import { DataService } from '@ghostfolio/ui/services';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Inject, Injectable } from '@angular/core';
import { SortDirection } from '@angular/material/sort';
import { DataSource, MarketData, Platform } from '@prisma/client';
import { JobStatus } from 'bull';
import { environment } from '../../environments/environment';
@Injectable({
providedIn: 'root'
})
export class AdminService {
public constructor(
private dataService: DataService,
@Inject(GF_ENVIRONMENT) private environment: GfEnvironment,
private http: HttpClient
) {}
@ -124,7 +124,7 @@ export class AdminService {
});
return this.http.get<DataProviderGhostfolioStatusResponse>(
`${environment.production ? 'https://ghostfol.io' : ''}/api/v2/data-providers/ghostfolio/status`,
`${this.environment.production ? 'https://ghostfol.io' : ''}/api/v2/data-providers/ghostfolio/status`,
{ headers }
);
}
@ -276,7 +276,7 @@ export class AdminService {
scraperConfiguration,
symbol
}: AssetProfileIdentifier & UpdateAssetProfileDto['scraperConfiguration']) {
return this.http.post<any>(
return this.http.post<{ price: number }>(
`/api/v1/admin/market-data/${dataSource}/${symbol}/test`,
{
scraperConfiguration

1
libs/ui/src/lib/services/index.ts

@ -1 +1,2 @@
export * from './admin.service';
export * from './data.service';

Loading…
Cancel
Save