diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 57ee8ad6f..9df3e0d6d 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1 @@ -custom: ['https://www.buymeacoffee.com/ghostfolio'] +buy_me_a_coffee: ghostfolio diff --git a/CHANGELOG.md b/CHANGELOG.md index e3c716e43..cb38a7469 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added the symbol to the benchmark component +- Added an option to configure the account column of the activities table component + ### Changed +- Hid the account column from the activities table of the account detail dialog to avoid redundant information +- Renamed the show access token dialog component to user account registration dialog component - Refreshed the cryptocurrencies list +- Upgraded `countup.js` from version `2.8.2` to `2.9.0` + +### Fixed + +- Fixed an issue with `unitPriceInAssetProfileCurrency` in the value redaction interceptor for the impersonation mode ### Fixed diff --git a/apps/api/src/interceptors/redact-values-in-response/redact-values-in-response.interceptor.ts b/apps/api/src/interceptors/redact-values-in-response/redact-values-in-response.interceptor.ts index 73b18960a..5e28e1591 100644 --- a/apps/api/src/interceptors/redact-values-in-response/redact-values-in-response.interceptor.ts +++ b/apps/api/src/interceptors/redact-values-in-response/redact-values-in-response.interceptor.ts @@ -61,6 +61,7 @@ export class RedactValuesInResponseInterceptor 'totalInterestInBaseCurrency', 'totalValueInBaseCurrency', 'unitPrice', + 'unitPriceInAssetProfileCurrency', 'value', 'valueInBaseCurrency' ].map((attribute) => { diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html index 8ca54ce29..eff500d0a 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html @@ -126,6 +126,7 @@ [hasPermissionToFilter]="false" [hasPermissionToOpenDetails]="false" [locale]="user?.settings?.locale" + [showAccountColumn]="false" [showActions]=" !data.hasImpersonationId && data.hasPermissionToCreateActivity && diff --git a/apps/client/src/app/components/home-market/home-market.html b/apps/client/src/app/components/home-market/home-market.html index 9ea286301..fc7230d35 100644 --- a/apps/client/src/app/components/home-market/home-market.html +++ b/apps/client/src/app/components/home-market/home-market.html @@ -34,6 +34,7 @@ [benchmarks]="benchmarks" [deviceType]="deviceType" [locale]="user?.settings?.locale || undefined" + [showSymbol]="false" [user]="user" /> @if (benchmarks?.length > 0) { diff --git a/apps/client/src/app/components/markets/markets.html b/apps/client/src/app/components/markets/markets.html index 90ddbba06..38234a785 100644 --- a/apps/client/src/app/components/markets/markets.html +++ b/apps/client/src/app/components/markets/markets.html @@ -43,6 +43,7 @@ [benchmarks]="benchmarks" [deviceType]="deviceType" [locale]="user?.settings?.locale || undefined" + [showSymbol]="false" [user]="user" /> @if (benchmarks?.length > 0) { diff --git a/apps/client/src/app/pages/register/register-page.component.ts b/apps/client/src/app/pages/register/register-page.component.ts index 0f644600b..eff4e308b 100644 --- a/apps/client/src/app/pages/register/register-page.component.ts +++ b/apps/client/src/app/pages/register/register-page.component.ts @@ -18,8 +18,8 @@ import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; -import { ShowAccessTokenDialogParams } from './show-access-token-dialog/interfaces/interfaces'; -import { GfShowAccessTokenDialogComponent } from './show-access-token-dialog/show-access-token-dialog.component'; +import { UserAccountRegistrationDialogParams } from './user-account-registration-dialog/interfaces/interfaces'; +import { GfUserAccountRegistrationDialogComponent } from './user-account-registration-dialog/user-account-registration-dialog.component'; @Component({ host: { class: 'page' }, @@ -84,15 +84,18 @@ export class GfRegisterPageComponent implements OnDestroy, OnInit { } public openShowAccessTokenDialog() { - const dialogRef = this.dialog.open(GfShowAccessTokenDialogComponent, { - data: { - deviceType: this.deviceType, - needsToAcceptTermsOfService: this.hasPermissionForSubscription - } as ShowAccessTokenDialogParams, - disableClose: true, - height: this.deviceType === 'mobile' ? '98vh' : undefined, - width: this.deviceType === 'mobile' ? '100vw' : '30rem' - }); + const dialogRef = this.dialog.open( + GfUserAccountRegistrationDialogComponent, + { + data: { + deviceType: this.deviceType, + needsToAcceptTermsOfService: this.hasPermissionForSubscription + } as UserAccountRegistrationDialogParams, + disableClose: true, + height: this.deviceType === 'mobile' ? '98vh' : undefined, + width: this.deviceType === 'mobile' ? '100vw' : '30rem' + } + ); dialogRef .afterClosed() diff --git a/apps/client/src/app/pages/register/show-access-token-dialog/interfaces/interfaces.ts b/apps/client/src/app/pages/register/user-account-registration-dialog/interfaces/interfaces.ts similarity index 53% rename from apps/client/src/app/pages/register/show-access-token-dialog/interfaces/interfaces.ts rename to apps/client/src/app/pages/register/user-account-registration-dialog/interfaces/interfaces.ts index c32acac40..15922f12f 100644 --- a/apps/client/src/app/pages/register/show-access-token-dialog/interfaces/interfaces.ts +++ b/apps/client/src/app/pages/register/user-account-registration-dialog/interfaces/interfaces.ts @@ -1,4 +1,4 @@ -export interface ShowAccessTokenDialogParams { +export interface UserAccountRegistrationDialogParams { deviceType: string; needsToAcceptTermsOfService: boolean; } diff --git a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts b/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts similarity index 87% rename from apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts rename to apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts index a73d1cf2a..dfa8145dc 100644 --- a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts +++ b/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts @@ -30,7 +30,7 @@ import { import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; -import { ShowAccessTokenDialogParams } from './interfaces/interfaces'; +import { UserAccountRegistrationDialogParams } from './interfaces/interfaces'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, @@ -50,11 +50,11 @@ import { ShowAccessTokenDialogParams } from './interfaces/interfaces'; TextFieldModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA], - selector: 'gf-show-access-token-dialog', - styleUrls: ['./show-access-token-dialog.scss'], - templateUrl: 'show-access-token-dialog.html' + selector: 'gf-user-account-registration-dialog', + styleUrls: ['./user-account-registration-dialog.scss'], + templateUrl: 'user-account-registration-dialog.html' }) -export class GfShowAccessTokenDialogComponent { +export class GfUserAccountRegistrationDialogComponent { @ViewChild(MatStepper) stepper!: MatStepper; public accessToken: string; @@ -69,7 +69,7 @@ export class GfShowAccessTokenDialogComponent { public constructor( private changeDetectorRef: ChangeDetectorRef, - @Inject(MAT_DIALOG_DATA) public data: ShowAccessTokenDialogParams, + @Inject(MAT_DIALOG_DATA) public data: UserAccountRegistrationDialogParams, private dataService: DataService ) { addIcons({ arrowForwardOutline, checkmarkOutline, copyOutline }); diff --git a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html b/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html similarity index 100% rename from apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html rename to apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html diff --git a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.scss b/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.scss similarity index 100% rename from apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.scss rename to apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.scss diff --git a/libs/ui/src/lib/activities-table/activities-table.component.ts b/libs/ui/src/lib/activities-table/activities-table.component.ts index b38af615e..db3341946 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.ts +++ b/libs/ui/src/lib/activities-table/activities-table.component.ts @@ -104,6 +104,7 @@ export class GfActivitiesTableComponent @Input() locale = getLocale(); @Input() pageIndex: number; @Input() pageSize = DEFAULT_PAGE_SIZE; + @Input() showAccountColumn = true; @Input() showActions = true; @Input() showCheckbox = false; @Input() showNameColumn = true; @@ -192,6 +193,12 @@ export class GfActivitiesTableComponent 'actions' ]; + if (!this.showAccountColumn) { + this.displayedColumns = this.displayedColumns.filter((column) => { + return column !== 'account'; + }); + } + if (!this.showCheckbox) { this.displayedColumns = this.displayedColumns.filter((column) => { return column !== 'importStatus' && column !== 'select'; diff --git a/libs/ui/src/lib/benchmark/benchmark.component.html b/libs/ui/src/lib/benchmark/benchmark.component.html index 8df8417f1..2b75e5672 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.html +++ b/libs/ui/src/lib/benchmark/benchmark.component.html @@ -12,7 +12,14 @@ Name - {{ element?.name }} +
+ {{ element?.name }} +
+ @if (showSymbol) { +
+ {{ element?.symbol }} +
+ } diff --git a/libs/ui/src/lib/benchmark/benchmark.component.ts b/libs/ui/src/lib/benchmark/benchmark.component.ts index d0b2c94fd..3af9bc674 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.ts +++ b/libs/ui/src/lib/benchmark/benchmark.component.ts @@ -62,6 +62,7 @@ export class GfBenchmarkComponent implements OnChanges, OnDestroy { @Input() deviceType: string; @Input() hasPermissionToDeleteItem: boolean; @Input() locale = getLocale(); + @Input() showSymbol = true; @Input() user: User; @Output() itemDeleted = new EventEmitter(); diff --git a/package-lock.json b/package-lock.json index 64a90002a..39e3c66a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -64,7 +64,7 @@ "color": "5.0.0", "countries-and-timezones": "3.8.0", "countries-list": "3.1.1", - "countup.js": "2.8.2", + "countup.js": "2.9.0", "date-fns": "4.1.0", "envalid": "8.1.0", "fuse.js": "7.1.0", @@ -18619,9 +18619,9 @@ "license": "MIT" }, "node_modules/countup.js": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.8.2.tgz", - "integrity": "sha512-UtRoPH6udaru/MOhhZhI/GZHJKAyAxuKItD2Tr7AbrqrOPBX/uejWBBJt8q86169AMqKkE9h9/24kFWbUk/Bag==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.9.0.tgz", + "integrity": "sha512-llqrvyXztRFPp6+i8jx25phHWcVWhrHO4Nlt0uAOSKHB8778zzQswa4MU3qKBvkXfJKftRYFJuVHez67lyKdHg==", "license": "MIT" }, "node_modules/create-jest": { diff --git a/package.json b/package.json index 7ede9549d..69ba4a466 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "color": "5.0.0", "countries-and-timezones": "3.8.0", "countries-list": "3.1.1", - "countup.js": "2.8.2", + "countup.js": "2.9.0", "date-fns": "4.1.0", "envalid": "8.1.0", "fuse.js": "7.1.0",