From 519827045a38013742dbe7eed68309d377d6c40c Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Jun 2024 09:49:54 +0200 Subject: [PATCH 01/10] Feature/add dialog for benchmarks in markets overview (#3493) * Add benchmarks dialog in markets overview * Update changelog --- CHANGELOG.md | 6 ++ apps/api/src/app/app.module.ts | 2 + apps/api/src/app/asset/asset.controller.ts | 29 +++++++ apps/api/src/app/asset/asset.module.ts | 17 ++++ .../src/app/benchmark/benchmark.controller.ts | 4 +- .../src/app/benchmark/benchmark.service.ts | 4 +- .../home-market/home-market.component.ts | 4 + .../components/home-market/home-market.html | 1 + .../analysis/analysis-page.component.ts | 2 +- apps/client/src/app/services/data.service.ts | 17 +++- .../src/lib/interfaces/benchmark.interface.ts | 2 + .../benchmark-detail-dialog.component.scss | 12 +++ .../benchmark-detail-dialog.component.ts | 87 +++++++++++++++++++ .../benchmark-detail-dialog.html | 30 +++++++ .../interfaces/interfaces.ts | 11 +++ .../lib/benchmark/benchmark.component.html | 12 ++- .../src/lib/benchmark/benchmark.component.ts | 75 ++++++++++++++-- 17 files changed, 302 insertions(+), 13 deletions(-) create mode 100644 apps/api/src/app/asset/asset.controller.ts create mode 100644 apps/api/src/app/asset/asset.module.ts create mode 100644 libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.scss create mode 100644 libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.ts create mode 100644 libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.html create mode 100644 libs/ui/src/lib/benchmark/benchmark-detail-dialog/interfaces/interfaces.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index f5ed45c44..35083a942 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Added + +- Added a dialog for the benchmarks in the markets overview + ## 2.89.0 - 2024-06-14 ### Added diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 67bb9e03c..ca19d63bc 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -25,6 +25,7 @@ import { AccessModule } from './access/access.module'; import { AccountModule } from './account/account.module'; import { AdminModule } from './admin/admin.module'; import { AppController } from './app.controller'; +import { AssetModule } from './asset/asset.module'; import { AuthDeviceModule } from './auth-device/auth-device.module'; import { AuthModule } from './auth/auth.module'; import { BenchmarkModule } from './benchmark/benchmark.module'; @@ -51,6 +52,7 @@ import { UserModule } from './user/user.module'; AdminModule, AccessModule, AccountModule, + AssetModule, AuthDeviceModule, AuthModule, BenchmarkModule, diff --git a/apps/api/src/app/asset/asset.controller.ts b/apps/api/src/app/asset/asset.controller.ts new file mode 100644 index 000000000..828320f82 --- /dev/null +++ b/apps/api/src/app/asset/asset.controller.ts @@ -0,0 +1,29 @@ +import { AdminService } from '@ghostfolio/api/app/admin/admin.service'; +import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; +import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor'; +import type { AdminMarketDataDetails } from '@ghostfolio/common/interfaces'; + +import { Controller, Get, Param, UseInterceptors } from '@nestjs/common'; +import { DataSource } from '@prisma/client'; +import { pick } from 'lodash'; + +@Controller('asset') +export class AssetController { + public constructor(private readonly adminService: AdminService) {} + + @Get(':dataSource/:symbol') + @UseInterceptors(TransformDataSourceInRequestInterceptor) + @UseInterceptors(TransformDataSourceInResponseInterceptor) + public async getAsset( + @Param('dataSource') dataSource: DataSource, + @Param('symbol') symbol: string + ): Promise { + const { assetProfile, marketData } = + await this.adminService.getMarketDataBySymbol({ dataSource, symbol }); + + return { + marketData, + assetProfile: pick(assetProfile, ['dataSource', 'name', 'symbol']) + }; + } +} diff --git a/apps/api/src/app/asset/asset.module.ts b/apps/api/src/app/asset/asset.module.ts new file mode 100644 index 000000000..168585ed8 --- /dev/null +++ b/apps/api/src/app/asset/asset.module.ts @@ -0,0 +1,17 @@ +import { AdminModule } from '@ghostfolio/api/app/admin/admin.module'; +import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; +import { TransformDataSourceInResponseModule } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.module'; + +import { Module } from '@nestjs/common'; + +import { AssetController } from './asset.controller'; + +@Module({ + controllers: [AssetController], + imports: [ + AdminModule, + TransformDataSourceInRequestModule, + TransformDataSourceInResponseModule + ] +}) +export class AssetModule {} diff --git a/apps/api/src/app/benchmark/benchmark.controller.ts b/apps/api/src/app/benchmark/benchmark.controller.ts index 7ac0e8c96..9c6331498 100644 --- a/apps/api/src/app/benchmark/benchmark.controller.ts +++ b/apps/api/src/app/benchmark/benchmark.controller.ts @@ -105,7 +105,7 @@ export class BenchmarkController { @Get(':dataSource/:symbol/:startDateString') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseInterceptors(TransformDataSourceInRequestInterceptor) - public async getBenchmarkMarketDataBySymbol( + public async getBenchmarkMarketDataForUser( @Param('dataSource') dataSource: DataSource, @Param('startDateString') startDateString: string, @Param('symbol') symbol: string, @@ -117,7 +117,7 @@ export class BenchmarkController { ); const userCurrency = this.request.user.Settings.settings.baseCurrency; - return this.benchmarkService.getMarketDataBySymbol({ + return this.benchmarkService.getMarketDataForUser({ dataSource, endDate, startDate, diff --git a/apps/api/src/app/benchmark/benchmark.service.ts b/apps/api/src/app/benchmark/benchmark.service.ts index 6f2047210..f4f2d7848 100644 --- a/apps/api/src/app/benchmark/benchmark.service.ts +++ b/apps/api/src/app/benchmark/benchmark.service.ts @@ -153,6 +153,7 @@ export class BenchmarkService { } return { + dataSource: benchmarkAssetProfiles[index].dataSource, marketCondition: this.getMarketCondition( performancePercentFromAllTimeHigh ), @@ -163,6 +164,7 @@ export class BenchmarkService { performancePercent: performancePercentFromAllTimeHigh } }, + symbol: benchmarkAssetProfiles[index].symbol, trend50d: benchmarkTrends[index].trend50d, trend200d: benchmarkTrends[index].trend200d }; @@ -213,7 +215,7 @@ export class BenchmarkService { .sort((a, b) => a.name.localeCompare(b.name)); } - public async getMarketDataBySymbol({ + public async getMarketDataForUser({ dataSource, endDate = new Date(), startDate, diff --git a/apps/client/src/app/components/home-market/home-market.component.ts b/apps/client/src/app/components/home-market/home-market.component.ts index 481b913fb..3a42a9ebc 100644 --- a/apps/client/src/app/components/home-market/home-market.component.ts +++ b/apps/client/src/app/components/home-market/home-market.component.ts @@ -11,6 +11,7 @@ import { import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -21,6 +22,7 @@ import { takeUntil } from 'rxjs/operators'; }) export class HomeMarketComponent implements OnDestroy, OnInit { public benchmarks: Benchmark[]; + public deviceType: string; public fearAndGreedIndex: number; public fearLabel = $localize`Fear`; public greedLabel = $localize`Greed`; @@ -36,8 +38,10 @@ export class HomeMarketComponent implements OnDestroy, OnInit { public constructor( private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, + private deviceService: DeviceDetectorService, private userService: UserService ) { + this.deviceType = this.deviceService.getDeviceInfo().deviceType; this.info = this.dataService.fetchInfo(); this.isLoading = true; 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 8406cd2ff..c362fdd18 100644 --- a/apps/client/src/app/components/home-market/home-market.html +++ b/apps/client/src/app/components/home-market/home-market.html @@ -32,6 +32,7 @@
diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts index 2ce073b17..0450e32ae 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -285,7 +285,7 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { this.isLoadingBenchmarkComparator = true; this.dataService - .fetchBenchmarkBySymbol({ + .fetchBenchmarkForUser({ dataSource, symbol, range: this.user?.settings?.dateRange, diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 241bb1d3e..64e498d12 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -19,6 +19,7 @@ import { Access, AccountBalancesResponse, Accounts, + AdminMarketDataDetails, BenchmarkMarketDataDetails, BenchmarkResponse, Export, @@ -284,7 +285,21 @@ export class DataService { return this.http.get('/api/v1/access'); } - public fetchBenchmarkBySymbol({ + public fetchAsset({ + dataSource, + symbol + }: UniqueAsset): Observable { + return this.http.get(`/api/v1/asset/${dataSource}/${symbol}`).pipe( + map((data) => { + for (const item of data.marketData) { + item.date = parseISO(item.date); + } + return data; + }) + ); + } + + public fetchBenchmarkForUser({ dataSource, range, startDate, diff --git a/libs/common/src/lib/interfaces/benchmark.interface.ts b/libs/common/src/lib/interfaces/benchmark.interface.ts index 2d63b677c..bf85cd752 100644 --- a/libs/common/src/lib/interfaces/benchmark.interface.ts +++ b/libs/common/src/lib/interfaces/benchmark.interface.ts @@ -3,6 +3,7 @@ import { BenchmarkTrend } from '@ghostfolio/common/types/'; import { EnhancedSymbolProfile } from './enhanced-symbol-profile.interface'; export interface Benchmark { + dataSource: EnhancedSymbolProfile['dataSource']; marketCondition: 'ALL_TIME_HIGH' | 'BEAR_MARKET' | 'NEUTRAL_MARKET'; name: EnhancedSymbolProfile['name']; performances: { @@ -11,6 +12,7 @@ export interface Benchmark { performancePercent: number; }; }; + symbol: EnhancedSymbolProfile['symbol']; trend50d: BenchmarkTrend; trend200d: BenchmarkTrend; } diff --git a/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.scss b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.scss new file mode 100644 index 000000000..02f5d58a1 --- /dev/null +++ b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.scss @@ -0,0 +1,12 @@ +:host { + display: block; + + .mat-mdc-dialog-content { + max-height: unset; + + gf-line-chart { + aspect-ratio: 16 / 9; + margin: 0 -0.5rem; + } + } +} diff --git a/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.ts b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.ts new file mode 100644 index 000000000..73af9e681 --- /dev/null +++ b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.ts @@ -0,0 +1,87 @@ +import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module'; +import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module'; +import { DataService } from '@ghostfolio/client/services/data.service'; +import { DATE_FORMAT } from '@ghostfolio/common/helper'; +import { + AdminMarketDataDetails, + LineChartItem +} from '@ghostfolio/common/interfaces'; +import { GfLineChartComponent } from '@ghostfolio/ui/line-chart'; + +import { CommonModule } from '@angular/common'; +import { + CUSTOM_ELEMENTS_SCHEMA, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + Inject, + OnDestroy, + OnInit +} from '@angular/core'; +import { + MAT_DIALOG_DATA, + MatDialogModule, + MatDialogRef +} from '@angular/material/dialog'; +import { format } from 'date-fns'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { BenchmarkDetailDialogParams } from './interfaces/interfaces'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + host: { class: 'd-flex flex-column h-100' }, + imports: [ + CommonModule, + GfDialogFooterModule, + GfDialogHeaderModule, + GfLineChartComponent, + MatDialogModule + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA], + selector: 'gf-benchmark-detail-dialog', + standalone: true, + styleUrls: ['./benchmark-detail-dialog.component.scss'], + templateUrl: 'benchmark-detail-dialog.html' +}) +export class GfBenchmarkDetailDialogComponent implements OnDestroy, OnInit { + public assetProfile: AdminMarketDataDetails['assetProfile']; + public historicalDataItems: LineChartItem[]; + + private unsubscribeSubject = new Subject(); + + public constructor( + private changeDetectorRef: ChangeDetectorRef, + private dataService: DataService, + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: BenchmarkDetailDialogParams + ) {} + + public ngOnInit() { + this.dataService + .fetchAsset({ + dataSource: this.data.dataSource, + symbol: this.data.symbol + }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ assetProfile, marketData }) => { + this.assetProfile = assetProfile; + + this.historicalDataItems = marketData.map(({ date, marketPrice }) => { + return { date: format(date, DATE_FORMAT), value: marketPrice }; + }); + + this.changeDetectorRef.markForCheck(); + }); + } + + public onClose() { + this.dialogRef.close(); + } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } +} diff --git a/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.html b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.html new file mode 100644 index 000000000..23196f162 --- /dev/null +++ b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.html @@ -0,0 +1,30 @@ + + +
+
+ +
+
+ + diff --git a/libs/ui/src/lib/benchmark/benchmark-detail-dialog/interfaces/interfaces.ts b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/interfaces/interfaces.ts new file mode 100644 index 000000000..291f4c973 --- /dev/null +++ b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/interfaces/interfaces.ts @@ -0,0 +1,11 @@ +import { ColorScheme } from '@ghostfolio/common/types'; + +import { DataSource } from '@prisma/client'; + +export interface BenchmarkDetailDialogParams { + colorScheme: ColorScheme; + dataSource: DataSource; + deviceType: string; + locale: string; + symbol: string; +} diff --git a/libs/ui/src/lib/benchmark/benchmark.component.html b/libs/ui/src/lib/benchmark/benchmark.component.html index 9497c63f4..ec92554de 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.html +++ b/libs/ui/src/lib/benchmark/benchmark.component.html @@ -110,5 +110,15 @@ - + diff --git a/libs/ui/src/lib/benchmark/benchmark.component.ts b/libs/ui/src/lib/benchmark/benchmark.component.ts index 07e70c2fd..4dd4aa079 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.ts +++ b/libs/ui/src/lib/benchmark/benchmark.component.ts @@ -1,6 +1,8 @@ import { getLocale, resolveMarketCondition } from '@ghostfolio/common/helper'; -import { Benchmark, User } from '@ghostfolio/common/interfaces'; +import { Benchmark, UniqueAsset, User } from '@ghostfolio/common/interfaces'; import { translate } from '@ghostfolio/ui/i18n'; +import { GfTrendIndicatorComponent } from '@ghostfolio/ui/trend-indicator'; +import { GfValueComponent } from '@ghostfolio/ui/value'; import { CommonModule } from '@angular/common'; import { @@ -8,13 +10,17 @@ import { ChangeDetectionStrategy, Component, Input, - OnChanges + OnChanges, + OnDestroy } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; import { MatTableModule } from '@angular/material/table'; +import { ActivatedRoute, Router, RouterModule } from '@angular/router'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; +import { Subject, takeUntil } from 'rxjs'; -import { GfTrendIndicatorComponent } from '../trend-indicator'; -import { GfValueComponent } from '../value'; +import { GfBenchmarkDetailDialogComponent } from './benchmark-detail-dialog/benchmark-detail-dialog.component'; +import { BenchmarkDetailDialogParams } from './benchmark-detail-dialog/interfaces/interfaces'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, @@ -23,7 +29,8 @@ import { GfValueComponent } from '../value'; GfTrendIndicatorComponent, GfValueComponent, MatTableModule, - NgxSkeletonLoaderModule + NgxSkeletonLoaderModule, + RouterModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-benchmark', @@ -31,8 +38,9 @@ import { GfValueComponent } from '../value'; styleUrls: ['./benchmark.component.scss'], templateUrl: './benchmark.component.html' }) -export class GfBenchmarkComponent implements OnChanges { +export class GfBenchmarkComponent implements OnChanges, OnDestroy { @Input() benchmarks: Benchmark[]; + @Input() deviceType: string; @Input() locale = getLocale(); @Input() user: User; @@ -40,7 +48,28 @@ export class GfBenchmarkComponent implements OnChanges { public resolveMarketCondition = resolveMarketCondition; public translate = translate; - public constructor() {} + private unsubscribeSubject = new Subject(); + + public constructor( + private dialog: MatDialog, + private route: ActivatedRoute, + private router: Router + ) { + this.route.queryParams + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((params) => { + if ( + params['benchmarkDetailDialog'] && + params['dataSource'] && + params['symbol'] + ) { + this.openBenchmarkDetailDialog({ + dataSource: params['dataSource'], + symbol: params['symbol'] + }); + } + }); + } public ngOnChanges() { if (this.user?.settings?.isExperimentalFeatures) { @@ -54,4 +83,36 @@ export class GfBenchmarkComponent implements OnChanges { ]; } } + + public onOpenBenchmarkDialog({ dataSource, symbol }: UniqueAsset) { + this.router.navigate([], { + queryParams: { dataSource, symbol, benchmarkDetailDialog: true } + }); + } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } + + private openBenchmarkDetailDialog({ dataSource, symbol }: UniqueAsset) { + const dialogRef = this.dialog.open(GfBenchmarkDetailDialogComponent, { + data: { + dataSource, + symbol, + colorScheme: this.user?.settings?.colorScheme, + deviceType: this.deviceType, + locale: this.locale + }, + height: this.deviceType === 'mobile' ? '97.5vh' : undefined, + width: this.deviceType === 'mobile' ? '100vw' : '50rem' + }); + + dialogRef + .afterClosed() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + this.router.navigate(['.'], { relativeTo: this.route }); + }); + } } From 6c2acf2aa64e53d51d1e4bf106f6dc51885ef1ed Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Jun 2024 10:53:20 +0200 Subject: [PATCH 02/10] Feature/set up ssl for local development (#3482) * Set up SSL for local development * Update changelog --- CHANGELOG.md | 4 ++++ README.md | 4 ++-- apps/client/localhost.cert | 18 ++++++++++++++++++ apps/client/localhost.pem | 28 ++++++++++++++++++++++++++++ apps/client/project.json | 5 ++++- libs/common/src/lib/config.ts | 2 +- 6 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 apps/client/localhost.cert create mode 100644 apps/client/localhost.pem diff --git a/CHANGELOG.md b/CHANGELOG.md index 35083a942..e8d63b17f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added a dialog for the benchmarks in the markets overview +### Changed + +- Set up SSL for local development + ## 2.89.0 - 2024-06-14 ### Added diff --git a/README.md b/README.md index 2d49124b8..cd8af7af2 100644 --- a/README.md +++ b/README.md @@ -161,7 +161,7 @@ Ghostfolio is available for various home server systems, including [CasaOS](http 1. Run `yarn database:setup` to initialize the database schema 1. Run `git config core.hooksPath ./git-hooks/` to setup git hooks 1. Start the server and the client (see [_Development_](#Development)) -1. Open http://localhost:4200/en in your browser +1. Open https://localhost:4200/en in your browser 1. Create a new user via _Get Started_ (this first user will get the role `ADMIN`) ### Start Server @@ -176,7 +176,7 @@ Run `yarn start:server` ### Start Client -Run `yarn start:client` and open http://localhost:4200/en in your browser +Run `yarn start:client` and open https://localhost:4200/en in your browser ### Start _Storybook_ diff --git a/apps/client/localhost.cert b/apps/client/localhost.cert new file mode 100644 index 000000000..12f31dd27 --- /dev/null +++ b/apps/client/localhost.cert @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC5TCCAc2gAwIBAgIJAJAMHOFnJ6oyMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV +BAMMCWxvY2FsaG9zdDAeFw0yNDAyMjcxNTQ2MzFaFw0yNDAzMjgxNTQ2MzFaMBQx +EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAJ0hRjViikEKVIyukXR4CfuYVvFEFzB6AwAQ9Jrz2MseqpLacLTXFFAS54mp +iDuqPBzs9ta40mlSrqSBuAWKikpW5kTNnmqUnDZ6iSJezbYWx9YyULGqqb1q3C4/ +5pH9m6NHJ+2uaUNKlDxYNKbntqs3drQEdxH9yv672Z53nvogTcf9jz6zjutEQGSV +HgVkCTTQmzf3+3st+VJ5D8JeYFR+tpZ6yleqgXFaTMtPZRfKLvTkQ+KeyCJLnsUJ +BQvdCKI0PGsG6d6ygXFmSePolD9KW3VTKKDPCsndID89vAnRWDj9UhzvycxmKpcF +GrUPH5+Pis1PM1R7OnAvnFygnyECAwEAAaM6MDgwFAYDVR0RBA0wC4IJbG9jYWxo +b3N0MAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0B +AQsFAAOCAQEAOdzrY3RTAPnBVAd3/GKIEkielYyOgKPnvd+RcOB+je8cXZY+vaxX +uEFP0526G00+kRZ2Tx9t0SmjoSpwg3lHUPMko0dIxgRlqISDAohdrEptHpcVujsD +ak88LLnAurr60JNjWX2wbEoJ18KLtqGSnATdmCgKwDPIN5a7+ssp44BGyzH6VYCg +wV3VjJl0pp4C5M0Jfu0p1FrQjzIVhgqR7JFYmvqIogWrGwYAQK/3XRXq8t48J5X3 +IsfWiLAA2ZdCoWAnZ6PAGBOoGivtkJm967pHjd/28qYY6mQo4sN2ksEOjx6/YslF +2mOJdLV/DzqoggUsTpPEG0dRhzQLTGHKDQ== +-----END CERTIFICATE----- diff --git a/apps/client/localhost.pem b/apps/client/localhost.pem new file mode 100644 index 000000000..dc2a7ff5a --- /dev/null +++ b/apps/client/localhost.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCdIUY1YopBClSM +rpF0eAn7mFbxRBcwegMAEPSa89jLHqqS2nC01xRQEueJqYg7qjwc7PbWuNJpUq6k +gbgFiopKVuZEzZ5qlJw2eokiXs22FsfWMlCxqqm9atwuP+aR/ZujRyftrmlDSpQ8 +WDSm57arN3a0BHcR/cr+u9med576IE3H/Y8+s47rREBklR4FZAk00Js39/t7LflS +eQ/CXmBUfraWespXqoFxWkzLT2UXyi705EPinsgiS57FCQUL3QiiNDxrBunesoFx +Zknj6JQ/Slt1UyigzwrJ3SA/PbwJ0Vg4/VIc78nMZiqXBRq1Dx+fj4rNTzNUezpw +L5xcoJ8hAgMBAAECggEAPU5YOEgELTA8oM8TjV+wdWuQsH2ilpVkSkhTR4nQkh+a +6cU0qDoqgLt/fySYNL9MyPRjso9V+SX7YdAC3paZMjwJh9q57lehQ1g33SMkG+Fz +gs0K0ucFZxQkaB8idN+ANAp1N7UO+ORGRe0cTeqmSNNRCxea5XgiFZVxaPS/IFOR +vVdXS1DulgwHh4H0ljKmkj7jc9zPBSc9ccW5Ml2q4a26Atu4IC/Mlp/DF4GNELbD +ebi9ZOZG33ip2bdhj3WX7NW9GJaaViKtVUpcpR6u+6BfvTXQ6xrqdoxXk9fnPzzf +sSoLPTt8yO4RavP1zQU22PhgIcWudhCiy/2Nv+uLqQKBgQDMPh1/xwdFl8yES8dy +f0xJyCDWPiB+xzGwcOAC90FrNZaqG0WWs3VHE4cilaWjCflvdR6aAEDEY68sZJhl +h+ChT/g61QLMOI+VIDQ1kJXKYgfS/B+BE1PZ0EkuymKFOvbNO8agHodB8CqnZaQh +bLuZaDnZ0JLK4im3KPt70+aKYwKBgQDE8s6xl0SLu+yJLo3VklCRD67Z8/jlvx2t +h3DF6NG8pB3QmvKdJWFKuLAWLGflJwbUW9Pt3hXkc0649KQrtiIYC0ZMh9KMaVCk +WmjS/n2eIUQZ7ZUlwFesi4p4iGynVBavIY8TJ6Y+K3TvsJgXP3IZ96r689PQJo8E +KbSeyYzFqwKBgGQTS4EAlJ+U8bEhMGj51veQCAbyChoUoFRD+n95h6RwbZKMKlzd +MenRt7VKfg6VJJNoX8Y1uYaBEaQ+5i1Zlsdz1718AhLu4+u+C9bzMXIo9ox63TTx +s3RWioVSxVNiwOtvDrQGQWAdvcioFPQLwyA34aDIgiTHDImimxbhjWThAoGAWOqW +Tq9QjxWk0Lpn5ohMP3GpK1VuhasnJvUDARb/uf8ORuPtrOz3Y9jGBvy9W0OnXbCn +mbiugZldbTtl8yYjdl+AuYSIlkPl2I3IzZl/9Shnqp0MvSJ9crT9KzXMeC8Knr6z +7Z30/BR6ksxTngtS5E5grzPt6Qe/gc2ich3kpEkCgYBfBHUhVIKVrDW/8a7U2679 +Wj4i9us/M3iPMxcTv7/ZAg08TEvNBQYtvVQLu0NfDKXx8iGKJJ6evIYgNXVm2sPq +VzSgwGCALi1X0443amZU+mnX+/9RnBqyM+PJU8570mM83jqKlY/BEsi0aqxTioFG +an3xbjjN+Rq9iKLzmPxIMg== +-----END PRIVATE KEY----- diff --git a/apps/client/project.json b/apps/client/project.json index 0cd576e16..153ae02d1 100644 --- a/apps/client/project.json +++ b/apps/client/project.json @@ -163,8 +163,11 @@ "serve": { "executor": "@nx/angular:dev-server", "options": { + "buildTarget": "client:build", "proxyConfig": "apps/client/proxy.conf.json", - "buildTarget": "client:build" + "ssl": true, + "sslCert": "apps/client/localhost.cert", + "sslKey": "apps/client/localhost.pem" }, "configurations": { "development-de": { diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index cd0f207da..b7f20a978 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -41,7 +41,7 @@ export const DEFAULT_CURRENCY = 'USD'; export const DEFAULT_DATE_FORMAT_MONTH_YEAR = 'MMM yyyy'; export const DEFAULT_LANGUAGE_CODE = 'en'; export const DEFAULT_PAGE_SIZE = 50; -export const DEFAULT_ROOT_URL = 'http://localhost:4200'; +export const DEFAULT_ROOT_URL = 'https://localhost:4200'; // USX is handled separately export const DERIVED_CURRENCIES = [ From a25d5b9dc046fa935b094d07746b321fec7c5e38 Mon Sep 17 00:00:00 2001 From: Juan Abascal Sanchez Date: Mon, 17 Jun 2024 16:41:12 +0200 Subject: [PATCH 03/10] Feature/improve error handling in biometric authentication registration (#3496) * Improve error handling in biometric authentication registration * Update changelog --- CHANGELOG.md | 1 + .../user-account-settings.component.ts | 70 +++++++++++++------ .../user-account-settings.html | 4 +- 3 files changed, 53 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e8d63b17f..cd2383efa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the error handling in the biometric authentication registration - Set up SSL for local development ## 2.89.0 - 2024-06-14 diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts index 4f80207aa..a809d5ed2 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -20,9 +20,10 @@ import { } from '@angular/core'; import { FormBuilder, Validators } from '@angular/forms'; import { MatSlideToggleChange } from '@angular/material/slide-toggle'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { format, parseISO } from 'date-fns'; import { uniq } from 'lodash'; -import { EMPTY, Subject } from 'rxjs'; +import { EMPTY, Subject, throwError } from 'rxjs'; import { catchError, takeUntil } from 'rxjs/operators'; @Component({ @@ -42,6 +43,7 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { public hasPermissionToUpdateViewMode: boolean; public hasPermissionToUpdateUserSettings: boolean; public isAccessTokenHidden = true; + public isFingerprintSupported = this.doesBrowserSupportAuthn(); public isWebAuthnEnabled: boolean; public language = document.documentElement.lang; public locales = [ @@ -67,6 +69,7 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { private dataService: DataService, private formBuilder: FormBuilder, private settingsStorageService: SettingsStorageService, + private snackBar: MatSnackBar, private tokenStorageService: TokenStorageService, private userService: UserService, public webAuthnService: WebAuthnService @@ -222,9 +225,15 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { }); } - public onSignInWithFingerprintChange(aEvent: MatSlideToggleChange) { + public async onSignInWithFingerprintChange(aEvent: MatSlideToggleChange) { if (aEvent.checked) { - this.registerDevice(); + try { + await this.registerDevice(); + } catch { + aEvent.source.checked = false; + + this.changeDetectorRef.markForCheck(); + } } else { const confirmation = confirm( $localize`Do you really want to remove this sign in method?` @@ -265,35 +274,54 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { this.webAuthnService .deregister() .pipe( - takeUntil(this.unsubscribeSubject), catchError(() => { this.update(); return EMPTY; - }) + }), + takeUntil(this.unsubscribeSubject) ) .subscribe(() => { this.update(); }); } - private registerDevice() { - this.webAuthnService - .register() - .pipe( - takeUntil(this.unsubscribeSubject), - catchError(() => { - this.update(); - - return EMPTY; - }) - ) - .subscribe(() => { - this.settingsStorageService.removeSetting(KEY_STAY_SIGNED_IN); - this.settingsStorageService.removeSetting(KEY_TOKEN); + private doesBrowserSupportAuthn() { + // Authn is built on top of PublicKeyCredential: https://stackoverflow.com/a/55868189 + return typeof PublicKeyCredential !== 'undefined'; + } - this.update(); - }); + private registerDevice(): Promise { + return new Promise((resolve, reject) => { + this.webAuthnService + .register() + .pipe( + catchError((error: Error) => { + this.snackBar.open( + $localize`Oops! There was an error setting up biometric authentication.`, + undefined, + { duration: 3000 } + ); + + return throwError(() => { + return error; + }); + }), + takeUntil(this.unsubscribeSubject) + ) + .subscribe({ + next: () => { + this.settingsStorageService.removeSetting(KEY_STAY_SIGNED_IN); + this.settingsStorageService.removeSetting(KEY_TOKEN); + + this.update(); + resolve(); + }, + error: (error) => { + reject(error); + } + }); + }); } private update() { diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.html b/apps/client/src/app/components/user-account-settings/user-account-settings.html index 0dd8ac47e..c369f81bd 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.html +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -189,7 +189,9 @@ color="primary" hideIcon="true" [checked]="isWebAuthnEnabled === true" - [disabled]="!hasPermissionToUpdateUserSettings" + [disabled]=" + !hasPermissionToUpdateUserSettings || !isFingerprintSupported + " (change)="onSignInWithFingerprintChange($event)" />
From a97110348cef99c714e7f4ba491eb8dd57ba6998 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 18 Jun 2024 20:11:49 +0200 Subject: [PATCH 04/10] Feature/move active filters indicator to general availability (#3485) * Move to general availability * Update changelog --- CHANGELOG.md | 1 + apps/client/src/app/components/header/header.component.html | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd2383efa..2be539f7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Moved the indicator for active filters from experimental to general availability - Improved the error handling in the biometric authentication registration - Set up SSL for local development diff --git a/apps/client/src/app/components/header/header.component.html b/apps/client/src/app/components/header/header.component.html index 369f711fd..b545c40aa 100644 --- a/apps/client/src/app/components/header/header.component.html +++ b/apps/client/src/app/components/header/header.component.html @@ -121,9 +121,7 @@ matBadge="✓" matBadgeSize="small" [mat-menu-trigger-for]="assistantMenu" - [matBadgeHidden]=" - !hasFilters || !user?.settings?.isExperimentalFeatures - " + [matBadgeHidden]="!hasFilters" [matMenuTriggerRestoreFocus]="false" (menuOpened)="onOpenAssistant()" > From a201fc7a977ad9e3cbcd0290dfce4c89457cb17a Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 18 Jun 2024 20:37:02 +0200 Subject: [PATCH 05/10] Feature/upgrade stripe dependencies 20240617 (#3499) * Upgrade Stripe dependencies * Update changelog --- CHANGELOG.md | 1 + .../app/subscription/subscription.service.ts | 2 +- package.json | 6 ++--- yarn.lock | 24 +++++++++---------- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2be539f7c..ba52f3018 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Moved the indicator for active filters from experimental to general availability - Improved the error handling in the biometric authentication registration - Set up SSL for local development +- Upgraded the _Stripe_ dependencies ## 2.89.0 - 2024-06-14 diff --git a/apps/api/src/app/subscription/subscription.service.ts b/apps/api/src/app/subscription/subscription.service.ts index d53944787..545450669 100644 --- a/apps/api/src/app/subscription/subscription.service.ts +++ b/apps/api/src/app/subscription/subscription.service.ts @@ -22,7 +22,7 @@ export class SubscriptionService { this.stripe = new Stripe( this.configurationService.get('STRIPE_SECRET_KEY'), { - apiVersion: '2022-11-15' + apiVersion: '2024-04-10' } ); } diff --git a/package.json b/package.json index 9e3fa7b73..ffebe9b4c 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "@prisma/client": "5.15.0", "@simplewebauthn/browser": "9.0.1", "@simplewebauthn/server": "9.0.3", - "@stripe/stripe-js": "1.47.0", + "@stripe/stripe-js": "3.5.0", "alphavantage": "2.2.0", "big.js": "6.2.1", "body-parser": "1.20.2", @@ -121,7 +121,7 @@ "ngx-device-detector": "5.0.1", "ngx-markdown": "17.1.1", "ngx-skeleton-loader": "7.0.0", - "ngx-stripe": "15.5.0", + "ngx-stripe": "18.0.0", "papaparse": "5.3.1", "passport": "0.7.0", "passport-google-oauth20": "2.0.0", @@ -129,7 +129,7 @@ "prisma": "5.15.0", "reflect-metadata": "0.1.13", "rxjs": "7.5.6", - "stripe": "11.12.0", + "stripe": "15.11.0", "svgmap": "2.6.0", "twitter-api-v2": "1.14.2", "uuid": "9.0.1", diff --git a/yarn.lock b/yarn.lock index 610519b22..227bde2bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7420,10 +7420,10 @@ "@types/express" "^4.7.0" file-system-cache "2.3.0" -"@stripe/stripe-js@1.47.0": - version "1.47.0" - resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-1.47.0.tgz#48626a2e43302330aa826ce498a2d9761db4053d" - integrity sha512-jKSClqEIKS2MbPCXlSsseDSZyJ3dVrfUrYMz5LBY1o9iS2tfKbpTZACt8r2g+xyQozI+uHr76pVTyFsmBKA4Mg== +"@stripe/stripe-js@3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-3.5.0.tgz#7fff3d9d931e972c24dcc8ee25f7481a58879b2b" + integrity sha512-pKS3wZnJoL1iTyGBXAvCwduNNeghJHY6QSRSNNvpYnrrQrLZ6Owsazjyynu0e0ObRgks0i7Rv+pe2M7/MBTZpQ== "@swc/core-darwin-arm64@1.3.95": version "1.3.95" @@ -16308,10 +16308,10 @@ ngx-skeleton-loader@7.0.0: perf-marks "^1.13.4" tslib "^2.0.0" -ngx-stripe@15.5.0: - version "15.5.0" - resolved "https://registry.yarnpkg.com/ngx-stripe/-/ngx-stripe-15.5.0.tgz#b05fc1cf9f55bb5e7f307ac5cfdf29807a2f48a9" - integrity sha512-Ut3JANfxSzl/4qy+pokHOXGVITgNSlSMv7XGN2Y4tPDk6BVUD9SSl/3VuXW9UdbKAmX0XS68nRACiKCOSet5zw== +ngx-stripe@18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/ngx-stripe/-/ngx-stripe-18.0.0.tgz#bcd0932426688c89084a22670a87c868a1ae65a7" + integrity sha512-AT67vLeqEUDMnK5TfEaorumYJyOWqecbrh/1UWNtN8vF6Yzb0L/Dty3ANAa/QQi0OvBg6gXrudrhEnT8pT5lng== dependencies: tslib "^2.3.0" @@ -19170,10 +19170,10 @@ strip-json-comments@^3.0.1, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -stripe@11.12.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/stripe/-/stripe-11.12.0.tgz#2d7d4c37a6447a972128b1266e027693241704e3" - integrity sha512-7yzFyVV/eYpYalfjnw1f9sh/N3r5QVdx5MFtmpOg2QikKVAW4AptXC8P0wj1KNCd/LIo23nTDo0+m9788jHswg== +stripe@15.11.0: + version "15.11.0" + resolved "https://registry.yarnpkg.com/stripe/-/stripe-15.11.0.tgz#c50a682a1df34719c03674f5d0ccc37a661049fd" + integrity sha512-qmZF0PN1jRVpiQrXL8eTb9Jy/6S+aUlcDquKBFT2h3PkaD7RZ444FIojVXUg67FK2zFIUNXgMv02c7csdL5qHg== dependencies: "@types/node" ">=8.1.0" qs "^6.11.0" From f96f861341df836a220bfb023a5b084c99368df1 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 18 Jun 2024 20:53:03 +0200 Subject: [PATCH 06/10] Feature/upgrade ngx markdown to version 18.0.0 (#3498) * Upgrade ngx-markdown to version 18.0.0 * Update changelog --- CHANGELOG.md | 2 ++ package.json | 4 ++-- yarn.lock | 16 ++++++++-------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba52f3018..84858d189 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the error handling in the biometric authentication registration - Set up SSL for local development - Upgraded the _Stripe_ dependencies +- Upgraded `marked` from version `9.1.6` to `13.0.0` +- Upgraded `ngx-markdown` from version `17.1.1` to `18.0.0` ## 2.89.0 - 2024-06-14 diff --git a/package.json b/package.json index ffebe9b4c..bbe401515 100644 --- a/package.json +++ b/package.json @@ -115,11 +115,11 @@ "ionicons": "7.4.0", "jsonpath": "1.1.1", "lodash": "4.17.21", - "marked": "9.1.6", + "marked": "13.0.0", "ms": "3.0.0-canary.1", "ng-extract-i18n-merge": "2.12.0", "ngx-device-detector": "5.0.1", - "ngx-markdown": "17.1.1", + "ngx-markdown": "18.0.0", "ngx-skeleton-loader": "7.0.0", "ngx-stripe": "18.0.0", "papaparse": "5.3.1", diff --git a/yarn.lock b/yarn.lock index 227bde2bf..c7741864e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15615,10 +15615,10 @@ markdown-to-jsx@^7.1.8: resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz#f286b4d112dad3028acc1e77dfe1f653b347e131" integrity sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q== -marked@9.1.6: - version "9.1.6" - resolved "https://registry.yarnpkg.com/marked/-/marked-9.1.6.tgz#5d2a3f8180abfbc5d62e3258a38a1c19c0381695" - integrity sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q== +marked@13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-13.0.0.tgz#c18cda8a1fd0055859060c971e30f57beb79fd46" + integrity sha512-VTeDCd9txf4KLLljUZ0nljE/Incb9SrWuueE44QVuU0pkOdh4sfCeW1Z6lPcxyDRSVY6rm8db/0OPaN75RNUmw== mdast-util-definitions@^4.0.0: version "4.0.0" @@ -16287,10 +16287,10 @@ ngx-device-detector@5.0.1: dependencies: tslib "^2.0.0" -ngx-markdown@17.1.1: - version "17.1.1" - resolved "https://registry.yarnpkg.com/ngx-markdown/-/ngx-markdown-17.1.1.tgz#6e9c34fe8d470621b4609d68e8a403efb72b4e66" - integrity sha512-BGNWGJ6tmfPx+ScZFq5qeGLgWJwsakjScZ2e+oUzm+97DAHpIHSl8gptNZvZgRhOiFdjLcKBcuY2Rz8WB6J6UQ== +ngx-markdown@18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/ngx-markdown/-/ngx-markdown-18.0.0.tgz#68435d7b6b82906b442bcd7d10ebd763389e0887" + integrity sha512-sFR9dIOKobdhNKZTlCrX3RmpoAhZ7k3T9h7oWJP676Oe9BsoxuAYZKJmFDT20vrY6xmFD3WtLJDZR7rNRLf6Uw== dependencies: tslib "^2.3.0" optionalDependencies: From 8642b1a7af515b2b150395f220dfefe8fe1e1766 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 19 Jun 2024 13:52:05 +0200 Subject: [PATCH 07/10] Feature/upgrade zone.js to version 0.14.7 (#3501) * Upgrade zone.js to version 0.14.7 * Update changelog --- CHANGELOG.md | 1 + package.json | 2 +- yarn.lock | 10 ++++------ 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84858d189..64a453634 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded the _Stripe_ dependencies - Upgraded `marked` from version `9.1.6` to `13.0.0` - Upgraded `ngx-markdown` from version `17.1.1` to `18.0.0` +- Upgraded `zone.js` from version `0.14.5` to `0.14.7` ## 2.89.0 - 2024-06-14 diff --git a/package.json b/package.json index bbe401515..de40b7af0 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "twitter-api-v2": "1.14.2", "uuid": "9.0.1", "yahoo-finance2": "2.11.3", - "zone.js": "0.14.5" + "zone.js": "0.14.7" }, "devDependencies": { "@angular-devkit/build-angular": "18.0.3", diff --git a/yarn.lock b/yarn.lock index c7741864e..46e934eec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20756,12 +20756,10 @@ yocto-queue@^1.0.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== -zone.js@0.14.5: - version "0.14.5" - resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.14.5.tgz#7f3591dc4cad1a030cda86b03d10450b719dd460" - integrity sha512-9XYWZzY6PhHOSdkYryNcMm7L8EK7a4q+GbTvxbIA2a9lMdRUpGuyaYvLDcg8D6bdn+JomSsbPcilVKg6SmUx6w== - dependencies: - tslib "^2.3.0" +zone.js@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.14.7.tgz#4a9a70599109663b1921165663bbac521995eef3" + integrity sha512-0w6DGkX2BPuiK/NLf+4A8FLE43QwBfuqz2dVgi/40Rj1WmqUskCqj329O/pwrqFJLG5X8wkeG2RhIAro441xtg== zone.js@~0.10.3: version "0.10.3" From 09613f93244ae5995a8ff92e710a9a45c3d2daf8 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 20 Jun 2024 17:45:31 +0200 Subject: [PATCH 08/10] Feature/extend self hosting faq by mobile app question (#3500) * Add question about mobile app * Update changelog --- CHANGELOG.md | 1 + .../pages/faq/self-hosting/self-hosting-page.html | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64a453634..0d78b059d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added a dialog for the benchmarks in the markets overview +- Extended the content of the _Self-Hosting_ section by the mobile app question on the Frequently Asked Questions (FAQ) page ### Changed diff --git a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html index 4445495fd..9892d160e 100644 --- a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html +++ b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html @@ -148,6 +148,21 @@ and desktop computers. + + + Is there a mobile app for the self-hosting version of Ghostfolio + available in the app store? + + No, there is no mobile app for the self-hosting version of Ghostfolio + available in the app store. However, you can add the web app to your + home screen (e.g. by selecting Add to Home screen in + Google Chrome), which provides the same user + experience. + Date: Thu, 20 Jun 2024 20:45:56 +0200 Subject: [PATCH 09/10] Feature/improve language localization for de 20240620 (#3504) * Update translations * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.de.xlf | 126 +++++++++-------- apps/client/src/locales/messages.es.xlf | 128 ++++++++++-------- apps/client/src/locales/messages.fr.xlf | 128 ++++++++++-------- apps/client/src/locales/messages.it.xlf | 128 ++++++++++-------- apps/client/src/locales/messages.nl.xlf | 128 ++++++++++-------- apps/client/src/locales/messages.pl.xlf | 128 ++++++++++-------- apps/client/src/locales/messages.pt.xlf | 128 ++++++++++-------- apps/client/src/locales/messages.tr.xlf | 128 ++++++++++-------- apps/client/src/locales/messages.xlf | 126 +++++++++-------- apps/client/src/locales/messages.zh.xlf | 128 ++++++++++-------- .../top-holdings/top-holdings.component.html | 2 +- 12 files changed, 699 insertions(+), 580 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d78b059d..7fa0f883c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Moved the indicator for active filters from experimental to general availability - Improved the error handling in the biometric authentication registration +- Improved the language localization for German (`de`) - Set up SSL for local development - Upgraded the _Stripe_ dependencies - Upgraded `marked` from version `9.1.6` to `13.0.0` diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index f2157a1aa..2a8923cbf 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -194,31 +194,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 198 + 203 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 206 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 209 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 268 + 273 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 276 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 274 + 279 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 277 + 282 libs/ui/src/lib/account-balances/account-balances.component.html @@ -518,7 +518,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 421 + 426 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -558,7 +558,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 428 + 433 @@ -774,7 +774,7 @@ Benutzer apps/client/src/app/components/header/header.component.html - 223 + 221 @@ -818,7 +818,7 @@ apps/client/src/app/components/header/header.component.html - 239 + 237 @@ -830,7 +830,7 @@ apps/client/src/app/components/header/header.component.html - 249 + 247 @@ -850,7 +850,7 @@ apps/client/src/app/components/header/header.component.html - 257 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -874,7 +874,7 @@ apps/client/src/app/components/header/header.component.html - 273 + 271 @@ -890,7 +890,7 @@ apps/client/src/app/components/header/header.component.html - 285 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -910,11 +910,11 @@ apps/client/src/app/components/header/header.component.html - 296 + 294 apps/client/src/app/components/header/header.component.html - 367 + 365 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -934,7 +934,7 @@ apps/client/src/app/components/header/header.component.html - 353 + 351 @@ -942,7 +942,7 @@ Ich apps/client/src/app/components/header/header.component.html - 205 + 203 @@ -950,7 +950,7 @@ Mein Ghostfolio apps/client/src/app/components/header/header.component.html - 264 + 262 @@ -958,7 +958,7 @@ Über Ghostfolio apps/client/src/app/components/header/header.component.html - 305 + 303 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -974,7 +974,7 @@ apps/client/src/app/components/header/header.component.html - 340 + 338 apps/client/src/app/pages/features/features-page.html @@ -990,7 +990,7 @@ apps/client/src/app/components/header/header.component.html - 382 + 380 apps/client/src/app/components/home-market/home-market.html @@ -1034,7 +1034,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 154 + 157 @@ -1070,7 +1070,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 245 + 247 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1134,7 +1134,7 @@ Einloggen apps/client/src/app/components/header/header.component.html - 396 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1282,11 +1282,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 200 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 265 + 270 @@ -1346,7 +1346,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 377 + 382 libs/ui/src/lib/assistant/assistant.html @@ -1396,10 +1396,6 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 197 - - libs/ui/src/lib/top-holdings/top-holdings.component.html - 81 - Today @@ -1670,7 +1666,7 @@ Möchtest du diese Anmeldemethode wirklich löschen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 230 + 239 @@ -1782,7 +1778,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 218 + 220 @@ -2242,7 +2238,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 182 + 187 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2254,11 +2250,11 @@ Stückpreis apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 212 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 285 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2270,11 +2266,11 @@ Gebühr apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 300 + 305 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 324 + 329 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2294,7 +2290,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 333 + 338 @@ -2318,7 +2314,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 348 + 353 @@ -2590,7 +2586,7 @@ Registrieren apps/client/src/app/components/header/header.component.html - 406 + 404 @@ -2686,7 +2682,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 369 @@ -2818,7 +2814,7 @@ Angst apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts @@ -2830,7 +2826,7 @@ Gier apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts @@ -2870,7 +2866,7 @@ Experimentelle Funktionen apps/client/src/app/components/user-account-settings/user-account-settings.html - 200 + 202 @@ -2910,7 +2906,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 36 @@ -3470,7 +3466,7 @@ Vorschau auf kommende Funktionalität apps/client/src/app/components/user-account-settings/user-account-settings.html - 201 + 203 @@ -3558,7 +3554,7 @@ Abonnement abschliessen apps/client/src/app/components/header/header.component.html - 180 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3814,7 +3810,7 @@ Ups! Der historische Wechselkurs konnte nicht abgerufen werden vom apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 234 + 239 @@ -3858,7 +3854,7 @@ Abonnement erneuern apps/client/src/app/components/header/header.component.html - 185 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -4794,7 +4790,7 @@ Daten exportieren apps/client/src/app/components/user-account-settings/user-account-settings.html - 226 + 228 @@ -5738,7 +5734,7 @@ Ups! Der historische Wechselkurs konnte nicht abgerufen werden vom apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 312 + 317 @@ -6570,7 +6566,7 @@ Möchtest du dieses Ghostfolio Konto wirklich schliessen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 144 + 147 @@ -6578,7 +6574,7 @@ Gefahrenzone apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 240 @@ -6586,7 +6582,7 @@ Konto schliessen apps/client/src/app/components/user-account-settings/user-account-settings.html - 273 + 275 @@ -6613,6 +6609,22 @@ 426 + + Oops! There was an error setting up biometric authentication. + Ups! Beim Einrichten der biometrischen Authentifizierung ist ein Fehler aufgetreten. + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 301 + + + + Show more + Mehr anzeigen + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 510ac87a5..e3c6b47e6 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -195,31 +195,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 198 + 203 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 206 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 209 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 268 + 273 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 276 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 274 + 279 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 277 + 282 libs/ui/src/lib/account-balances/account-balances.component.html @@ -519,7 +519,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 421 + 426 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -559,7 +559,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 428 + 433 @@ -775,7 +775,7 @@ Usuario apps/client/src/app/components/header/header.component.html - 223 + 221 @@ -819,7 +819,7 @@ apps/client/src/app/components/header/header.component.html - 239 + 237 @@ -831,7 +831,7 @@ apps/client/src/app/components/header/header.component.html - 249 + 247 @@ -851,7 +851,7 @@ apps/client/src/app/components/header/header.component.html - 257 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -875,7 +875,7 @@ apps/client/src/app/components/header/header.component.html - 273 + 271 @@ -891,7 +891,7 @@ apps/client/src/app/components/header/header.component.html - 285 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -911,11 +911,11 @@ apps/client/src/app/components/header/header.component.html - 296 + 294 apps/client/src/app/components/header/header.component.html - 367 + 365 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -935,7 +935,7 @@ apps/client/src/app/components/header/header.component.html - 353 + 351 @@ -943,7 +943,7 @@ apps/client/src/app/components/header/header.component.html - 205 + 203 @@ -951,7 +951,7 @@ Mi Ghostfolio apps/client/src/app/components/header/header.component.html - 264 + 262 @@ -959,7 +959,7 @@ Sobre Ghostfolio apps/client/src/app/components/header/header.component.html - 305 + 303 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -975,7 +975,7 @@ apps/client/src/app/components/header/header.component.html - 340 + 338 apps/client/src/app/pages/features/features-page.html @@ -991,7 +991,7 @@ apps/client/src/app/components/header/header.component.html - 382 + 380 apps/client/src/app/components/home-market/home-market.html @@ -1035,7 +1035,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 154 + 157 @@ -1071,7 +1071,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 245 + 247 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1135,7 +1135,7 @@ Iniciar sesión apps/client/src/app/components/header/header.component.html - 396 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1283,11 +1283,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 200 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 265 + 270 @@ -1347,7 +1347,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 377 + 382 libs/ui/src/lib/assistant/assistant.html @@ -1397,10 +1397,6 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 197 - - libs/ui/src/lib/top-holdings/top-holdings.component.html - 81 - Today @@ -1671,7 +1667,7 @@ ¿Estás seguro de eliminar este método de acceso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 230 + 239 @@ -1783,7 +1779,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 218 + 220 @@ -2243,7 +2239,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 182 + 187 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2255,11 +2251,11 @@ Precio unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 212 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 285 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2271,11 +2267,11 @@ Comisión apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 300 + 305 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 324 + 329 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2295,7 +2291,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 333 + 338 @@ -2319,7 +2315,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 348 + 353 @@ -2591,7 +2587,7 @@ Comenzar apps/client/src/app/components/header/header.component.html - 406 + 404 @@ -2675,7 +2671,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 369 @@ -2819,7 +2815,7 @@ Miedo apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts @@ -2831,7 +2827,7 @@ Codicia apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts @@ -2871,7 +2867,7 @@ Funcionalidades experimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 200 + 202 @@ -2911,7 +2907,7 @@ Automático apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 36 @@ -3471,7 +3467,7 @@ Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 201 + 203 @@ -3559,7 +3555,7 @@ Upgrade Plan apps/client/src/app/components/header/header.component.html - 180 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3815,7 +3811,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 234 + 239 @@ -3859,7 +3855,7 @@ Renew Plan apps/client/src/app/components/header/header.component.html - 185 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -4795,7 +4791,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 226 + 228 @@ -5739,7 +5735,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 312 + 317 @@ -6571,7 +6567,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 144 + 147 @@ -6579,7 +6575,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 240 @@ -6587,7 +6583,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 273 + 275 @@ -6614,6 +6610,22 @@ 426 + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 301 + + + + Show more + Show more + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 + + - + \ No newline at end of file diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 53df9ea28..0b81664d3 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -250,31 +250,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 198 + 203 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 206 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 209 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 268 + 273 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 276 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 274 + 279 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 277 + 282 libs/ui/src/lib/account-balances/account-balances.component.html @@ -574,7 +574,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 421 + 426 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -614,7 +614,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 428 + 433 @@ -646,7 +646,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 348 + 353 @@ -670,7 +670,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 369 @@ -850,7 +850,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 333 + 338 @@ -946,7 +946,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 377 + 382 libs/ui/src/lib/assistant/assistant.html @@ -1034,7 +1034,7 @@ Utilisateur apps/client/src/app/components/header/header.component.html - 223 + 221 @@ -1062,7 +1062,7 @@ apps/client/src/app/components/header/header.component.html - 257 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1154,7 +1154,7 @@ apps/client/src/app/components/header/header.component.html - 239 + 237 @@ -1166,7 +1166,7 @@ apps/client/src/app/components/header/header.component.html - 249 + 247 @@ -1178,7 +1178,7 @@ apps/client/src/app/components/header/header.component.html - 273 + 271 @@ -1194,7 +1194,7 @@ apps/client/src/app/components/header/header.component.html - 285 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -1214,11 +1214,11 @@ apps/client/src/app/components/header/header.component.html - 296 + 294 apps/client/src/app/components/header/header.component.html - 367 + 365 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -1238,7 +1238,7 @@ apps/client/src/app/components/header/header.component.html - 353 + 351 @@ -1246,7 +1246,7 @@ Moi apps/client/src/app/components/header/header.component.html - 205 + 203 @@ -1254,7 +1254,7 @@ Mon Ghostfolio apps/client/src/app/components/header/header.component.html - 264 + 262 @@ -1262,7 +1262,7 @@ À propos de Ghostfolio apps/client/src/app/components/header/header.component.html - 305 + 303 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1278,7 +1278,7 @@ apps/client/src/app/components/header/header.component.html - 340 + 338 apps/client/src/app/pages/features/features-page.html @@ -1294,7 +1294,7 @@ apps/client/src/app/components/header/header.component.html - 382 + 380 apps/client/src/app/components/home-market/home-market.html @@ -1310,7 +1310,7 @@ Se connecter apps/client/src/app/components/header/header.component.html - 396 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1322,7 +1322,7 @@ Démarrer apps/client/src/app/components/header/header.component.html - 406 + 404 @@ -1346,7 +1346,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 154 + 157 @@ -1362,7 +1362,7 @@ Peur apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts @@ -1374,7 +1374,7 @@ Avidité apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts @@ -1422,7 +1422,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 245 + 247 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1630,11 +1630,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 200 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 265 + 270 @@ -1690,7 +1690,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 182 + 187 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1890,7 +1890,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 36 @@ -1930,7 +1930,7 @@ Voulez-vous vraiment supprimer cette méthode de connexion ? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 230 + 239 @@ -2122,7 +2122,7 @@ Fonctionnalités expérimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 200 + 202 @@ -2134,7 +2134,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 218 + 220 @@ -2462,11 +2462,11 @@ Prix Unitaire apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 212 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 285 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2478,11 +2478,11 @@ Frais apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 300 + 305 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 324 + 329 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3132,10 +3132,6 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 197 - - libs/ui/src/lib/top-holdings/top-holdings.component.html - 81 - Account @@ -3470,7 +3466,7 @@ Avant-première de fonctionnalités futures apps/client/src/app/components/user-account-settings/user-account-settings.html - 201 + 203 @@ -3558,7 +3554,7 @@ Mettre à niveau l’Abonnement apps/client/src/app/components/header/header.component.html - 180 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3814,7 +3810,7 @@ Oups ! Nous n’avons pas pu obtenir le taux de change historique à partir de apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 234 + 239 @@ -3858,7 +3854,7 @@ Renouveler l’Abonnement apps/client/src/app/components/header/header.component.html - 185 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -4794,7 +4790,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 226 + 228 @@ -5738,7 +5734,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 312 + 317 @@ -6570,7 +6566,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 144 + 147 @@ -6578,7 +6574,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 240 @@ -6586,7 +6582,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 273 + 275 @@ -6613,6 +6609,22 @@ 426 + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 301 + + + + Show more + Show more + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 + + - + \ No newline at end of file diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index dc0c7854b..d7d3b193d 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -195,31 +195,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 198 + 203 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 206 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 209 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 268 + 273 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 276 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 274 + 279 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 277 + 282 libs/ui/src/lib/account-balances/account-balances.component.html @@ -519,7 +519,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 421 + 426 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -559,7 +559,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 428 + 433 @@ -775,7 +775,7 @@ Utente apps/client/src/app/components/header/header.component.html - 223 + 221 @@ -819,7 +819,7 @@ apps/client/src/app/components/header/header.component.html - 239 + 237 @@ -831,7 +831,7 @@ apps/client/src/app/components/header/header.component.html - 249 + 247 @@ -851,7 +851,7 @@ apps/client/src/app/components/header/header.component.html - 257 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -875,7 +875,7 @@ apps/client/src/app/components/header/header.component.html - 273 + 271 @@ -891,7 +891,7 @@ apps/client/src/app/components/header/header.component.html - 285 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -911,11 +911,11 @@ apps/client/src/app/components/header/header.component.html - 296 + 294 apps/client/src/app/components/header/header.component.html - 367 + 365 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -935,7 +935,7 @@ apps/client/src/app/components/header/header.component.html - 353 + 351 @@ -943,7 +943,7 @@ Io apps/client/src/app/components/header/header.component.html - 205 + 203 @@ -951,7 +951,7 @@ Il mio Ghostfolio apps/client/src/app/components/header/header.component.html - 264 + 262 @@ -959,7 +959,7 @@ Informazioni su Ghostfolio apps/client/src/app/components/header/header.component.html - 305 + 303 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -975,7 +975,7 @@ apps/client/src/app/components/header/header.component.html - 340 + 338 apps/client/src/app/pages/features/features-page.html @@ -991,7 +991,7 @@ apps/client/src/app/components/header/header.component.html - 382 + 380 apps/client/src/app/components/home-market/home-market.html @@ -1035,7 +1035,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 154 + 157 @@ -1071,7 +1071,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 245 + 247 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1135,7 +1135,7 @@ Accedi apps/client/src/app/components/header/header.component.html - 396 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1283,11 +1283,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 200 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 265 + 270 @@ -1347,7 +1347,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 377 + 382 libs/ui/src/lib/assistant/assistant.html @@ -1397,10 +1397,6 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 197 - - libs/ui/src/lib/top-holdings/top-holdings.component.html - 81 - Today @@ -1671,7 +1667,7 @@ Vuoi davvero rimuovere questo metodo di accesso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 230 + 239 @@ -1783,7 +1779,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 218 + 220 @@ -2243,7 +2239,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 182 + 187 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2255,11 +2251,11 @@ Prezzo unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 212 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 285 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2271,11 +2267,11 @@ Commissione apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 300 + 305 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 324 + 329 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2295,7 +2291,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 333 + 338 @@ -2319,7 +2315,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 348 + 353 @@ -2591,7 +2587,7 @@ Inizia apps/client/src/app/components/header/header.component.html - 406 + 404 @@ -2675,7 +2671,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 369 @@ -2819,7 +2815,7 @@ Paura apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts @@ -2831,7 +2827,7 @@ Avidità apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts @@ -2871,7 +2867,7 @@ Funzionalità sperimentali apps/client/src/app/components/user-account-settings/user-account-settings.html - 200 + 202 @@ -2911,7 +2907,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 36 @@ -3471,7 +3467,7 @@ Un'anteprima delle funzionalità in arrivo apps/client/src/app/components/user-account-settings/user-account-settings.html - 201 + 203 @@ -3559,7 +3555,7 @@ Aggiorna il piano apps/client/src/app/components/header/header.component.html - 180 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3815,7 +3811,7 @@ Ops! Impossibile ottenere il tasso di cambio storico da apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 234 + 239 @@ -3859,7 +3855,7 @@ Rinnova il piano apps/client/src/app/components/header/header.component.html - 185 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -4795,7 +4791,7 @@ Esporta dati apps/client/src/app/components/user-account-settings/user-account-settings.html - 226 + 228 @@ -5739,7 +5735,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 312 + 317 @@ -6571,7 +6567,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 144 + 147 @@ -6579,7 +6575,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 240 @@ -6587,7 +6583,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 273 + 275 @@ -6614,6 +6610,22 @@ 426 + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 301 + + + + Show more + Show more + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 + + - + \ No newline at end of file diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index d95416b34..bf31416a6 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -194,31 +194,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 198 + 203 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 206 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 209 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 268 + 273 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 276 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 274 + 279 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 277 + 282 libs/ui/src/lib/account-balances/account-balances.component.html @@ -518,7 +518,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 421 + 426 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -558,7 +558,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 428 + 433 @@ -774,7 +774,7 @@ Gebruiker apps/client/src/app/components/header/header.component.html - 223 + 221 @@ -818,7 +818,7 @@ apps/client/src/app/components/header/header.component.html - 239 + 237 @@ -830,7 +830,7 @@ apps/client/src/app/components/header/header.component.html - 249 + 247 @@ -850,7 +850,7 @@ apps/client/src/app/components/header/header.component.html - 257 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -874,7 +874,7 @@ apps/client/src/app/components/header/header.component.html - 273 + 271 @@ -890,7 +890,7 @@ apps/client/src/app/components/header/header.component.html - 285 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -910,11 +910,11 @@ apps/client/src/app/components/header/header.component.html - 296 + 294 apps/client/src/app/components/header/header.component.html - 367 + 365 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -934,7 +934,7 @@ apps/client/src/app/components/header/header.component.html - 353 + 351 @@ -942,7 +942,7 @@ Ik apps/client/src/app/components/header/header.component.html - 205 + 203 @@ -950,7 +950,7 @@ Mijn Ghostfolio apps/client/src/app/components/header/header.component.html - 264 + 262 @@ -958,7 +958,7 @@ Over Ghostfolio apps/client/src/app/components/header/header.component.html - 305 + 303 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -974,7 +974,7 @@ apps/client/src/app/components/header/header.component.html - 340 + 338 apps/client/src/app/pages/features/features-page.html @@ -990,7 +990,7 @@ apps/client/src/app/components/header/header.component.html - 382 + 380 apps/client/src/app/components/home-market/home-market.html @@ -1034,7 +1034,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 154 + 157 @@ -1070,7 +1070,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 245 + 247 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1134,7 +1134,7 @@ Aanmelden apps/client/src/app/components/header/header.component.html - 396 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1282,11 +1282,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 200 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 265 + 270 @@ -1346,7 +1346,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 377 + 382 libs/ui/src/lib/assistant/assistant.html @@ -1396,10 +1396,6 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 197 - - libs/ui/src/lib/top-holdings/top-holdings.component.html - 81 - Today @@ -1670,7 +1666,7 @@ Wil je deze aanmeldingsmethode echt verwijderen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 230 + 239 @@ -1782,7 +1778,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 218 + 220 @@ -2242,7 +2238,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 182 + 187 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2254,11 +2250,11 @@ Prijs per eenheid apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 212 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 285 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2270,11 +2266,11 @@ Transactiekosten apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 300 + 305 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 324 + 329 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2294,7 +2290,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 333 + 338 @@ -2318,7 +2314,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 348 + 353 @@ -2590,7 +2586,7 @@ Aan de slag apps/client/src/app/components/header/header.component.html - 406 + 404 @@ -2674,7 +2670,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 369 @@ -2818,7 +2814,7 @@ Angst apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts @@ -2830,7 +2826,7 @@ Hebzucht apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts @@ -2870,7 +2866,7 @@ Experimentele functies apps/client/src/app/components/user-account-settings/user-account-settings.html - 200 + 202 @@ -2910,7 +2906,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 36 @@ -3470,7 +3466,7 @@ Voorproefje van nieuwe functionaliteit apps/client/src/app/components/user-account-settings/user-account-settings.html - 201 + 203 @@ -3558,7 +3554,7 @@ Abonnement uitbreiden apps/client/src/app/components/header/header.component.html - 180 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3814,7 +3810,7 @@ Oeps! Kon de historische wisselkoers niet krijgen van apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 234 + 239 @@ -3858,7 +3854,7 @@ Abonnement Vernieuwen apps/client/src/app/components/header/header.component.html - 185 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -4794,7 +4790,7 @@ Exporteer Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 226 + 228 @@ -5738,7 +5734,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 312 + 317 @@ -6570,7 +6566,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 144 + 147 @@ -6578,7 +6574,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 240 @@ -6586,7 +6582,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 273 + 275 @@ -6613,6 +6609,22 @@ 426 + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 301 + + + + Show more + Show more + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 + + - + \ No newline at end of file diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index f0d653e5c..1dcb612c6 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -442,7 +442,7 @@ apps/client/src/app/components/header/header.component.html - 382 + 380 apps/client/src/app/components/home-market/home-market.html @@ -466,7 +466,7 @@ apps/client/src/app/components/header/header.component.html - 285 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -486,7 +486,7 @@ apps/client/src/app/components/header/header.component.html - 353 + 351 @@ -598,7 +598,7 @@ apps/client/src/app/components/header/header.component.html - 340 + 338 apps/client/src/app/pages/features/features-page.html @@ -642,11 +642,11 @@ apps/client/src/app/components/header/header.component.html - 296 + 294 apps/client/src/app/components/header/header.component.html - 367 + 365 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -978,31 +978,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 198 + 203 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 206 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 209 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 268 + 273 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 276 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 274 + 279 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 277 + 282 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1302,7 +1302,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 421 + 426 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1342,7 +1342,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 428 + 433 @@ -1406,7 +1406,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 348 + 353 @@ -1430,7 +1430,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 369 @@ -1658,7 +1658,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 333 + 338 @@ -1902,7 +1902,7 @@ apps/client/src/app/components/header/header.component.html - 257 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1962,7 +1962,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 377 + 382 libs/ui/src/lib/assistant/assistant.html @@ -2126,7 +2126,7 @@ apps/client/src/app/components/header/header.component.html - 239 + 237 @@ -2138,7 +2138,7 @@ apps/client/src/app/components/header/header.component.html - 249 + 247 @@ -2150,7 +2150,7 @@ apps/client/src/app/components/header/header.component.html - 273 + 271 @@ -2158,7 +2158,7 @@ Me apps/client/src/app/components/header/header.component.html - 205 + 203 @@ -2166,7 +2166,7 @@ User apps/client/src/app/components/header/header.component.html - 223 + 221 @@ -2174,7 +2174,7 @@ My Ghostfolio apps/client/src/app/components/header/header.component.html - 264 + 262 @@ -2182,7 +2182,7 @@ About Ghostfolio apps/client/src/app/components/header/header.component.html - 305 + 303 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2194,7 +2194,7 @@ Sign in apps/client/src/app/components/header/header.component.html - 396 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2206,7 +2206,7 @@ Get started apps/client/src/app/components/header/header.component.html - 406 + 404 @@ -2230,7 +2230,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 154 + 157 @@ -2246,7 +2246,7 @@ Fear apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts @@ -2258,7 +2258,7 @@ Greed apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts @@ -2390,7 +2390,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 245 + 247 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -2650,11 +2650,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 200 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 265 + 270 @@ -2710,7 +2710,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 182 + 187 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2858,7 +2858,7 @@ Upgrade Plan apps/client/src/app/components/header/header.component.html - 180 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3022,7 +3022,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 36 @@ -3030,7 +3030,7 @@ Do you really want to remove this sign in method? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 230 + 239 @@ -3162,7 +3162,7 @@ Experimental Features apps/client/src/app/components/user-account-settings/user-account-settings.html - 200 + 202 @@ -3170,7 +3170,7 @@ Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 201 + 203 @@ -3182,7 +3182,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 218 + 220 @@ -3190,7 +3190,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 226 + 228 @@ -4206,11 +4206,11 @@ Unit Price apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 212 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 285 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4222,7 +4222,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 312 + 317 @@ -4230,11 +4230,11 @@ Fee apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 300 + 305 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 324 + 329 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4246,7 +4246,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 234 + 239 @@ -4898,7 +4898,7 @@ Renew Plan apps/client/src/app/components/header/header.component.html - 185 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -5608,10 +5608,6 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 197 - - libs/ui/src/lib/top-holdings/top-holdings.component.html - 81 - Account @@ -6570,7 +6566,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 144 + 147 @@ -6578,7 +6574,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 240 @@ -6586,7 +6582,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 273 + 275 @@ -6613,6 +6609,22 @@ 426 + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 301 + + + + Show more + Show more + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 + + - + \ No newline at end of file diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index fa981c351..04acc074d 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -250,31 +250,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 198 + 203 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 206 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 209 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 268 + 273 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 276 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 274 + 279 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 277 + 282 libs/ui/src/lib/account-balances/account-balances.component.html @@ -574,7 +574,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 421 + 426 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -614,7 +614,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 428 + 433 @@ -646,7 +646,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 348 + 353 @@ -670,7 +670,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 369 @@ -902,7 +902,7 @@ Utilizador apps/client/src/app/components/header/header.component.html - 223 + 221 @@ -930,7 +930,7 @@ apps/client/src/app/components/header/header.component.html - 257 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1022,7 +1022,7 @@ apps/client/src/app/components/header/header.component.html - 239 + 237 @@ -1034,7 +1034,7 @@ apps/client/src/app/components/header/header.component.html - 249 + 247 @@ -1046,7 +1046,7 @@ apps/client/src/app/components/header/header.component.html - 273 + 271 @@ -1062,7 +1062,7 @@ apps/client/src/app/components/header/header.component.html - 285 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -1082,11 +1082,11 @@ apps/client/src/app/components/header/header.component.html - 296 + 294 apps/client/src/app/components/header/header.component.html - 367 + 365 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -1106,7 +1106,7 @@ apps/client/src/app/components/header/header.component.html - 353 + 351 @@ -1114,7 +1114,7 @@ Eu apps/client/src/app/components/header/header.component.html - 205 + 203 @@ -1122,7 +1122,7 @@ O meu Ghostfolio apps/client/src/app/components/header/header.component.html - 264 + 262 @@ -1130,7 +1130,7 @@ Sobre o Ghostfolio apps/client/src/app/components/header/header.component.html - 305 + 303 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1146,7 +1146,7 @@ apps/client/src/app/components/header/header.component.html - 340 + 338 apps/client/src/app/pages/features/features-page.html @@ -1162,7 +1162,7 @@ apps/client/src/app/components/header/header.component.html - 382 + 380 apps/client/src/app/components/home-market/home-market.html @@ -1178,7 +1178,7 @@ Iniciar sessão apps/client/src/app/components/header/header.component.html - 396 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1190,7 +1190,7 @@ Começar apps/client/src/app/components/header/header.component.html - 406 + 404 @@ -1214,7 +1214,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 154 + 157 @@ -1230,7 +1230,7 @@ Medo apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts @@ -1242,7 +1242,7 @@ Ganância apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts @@ -1298,7 +1298,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 245 + 247 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1506,11 +1506,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 200 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 265 + 270 @@ -1566,7 +1566,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 182 + 187 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1650,7 +1650,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 377 + 382 libs/ui/src/lib/assistant/assistant.html @@ -1684,10 +1684,6 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 197 - - libs/ui/src/lib/top-holdings/top-holdings.component.html - 81 - Today @@ -1874,7 +1870,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 36 @@ -1914,7 +1910,7 @@ Deseja realmente remover este método de início de sessão? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 230 + 239 @@ -2074,7 +2070,7 @@ Funcionalidades Experimentais apps/client/src/app/components/user-account-settings/user-account-settings.html - 200 + 202 @@ -2086,7 +2082,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 218 + 220 @@ -2378,11 +2374,11 @@ Preço por Unidade apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 212 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 285 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2394,11 +2390,11 @@ Comissão apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 300 + 305 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 324 + 329 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2418,7 +2414,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 333 + 338 @@ -3470,7 +3466,7 @@ Acesso antecipado a funcionalidades futuras apps/client/src/app/components/user-account-settings/user-account-settings.html - 201 + 203 @@ -3558,7 +3554,7 @@ Atualizar Plano apps/client/src/app/components/header/header.component.html - 180 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3814,7 +3810,7 @@ Oops! Não foi possível obter a taxa de câmbio histórica de apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 234 + 239 @@ -3858,7 +3854,7 @@ Renovar Plano apps/client/src/app/components/header/header.component.html - 185 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -4794,7 +4790,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 226 + 228 @@ -5738,7 +5734,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 312 + 317 @@ -6570,7 +6566,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 144 + 147 @@ -6578,7 +6574,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 240 @@ -6586,7 +6582,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 273 + 275 @@ -6613,6 +6609,22 @@ 426 + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 301 + + + + Show more + Show more + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 + + - + \ No newline at end of file diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 1871686f4..c47dcedc0 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -418,7 +418,7 @@ apps/client/src/app/components/header/header.component.html - 382 + 380 apps/client/src/app/components/home-market/home-market.html @@ -442,7 +442,7 @@ apps/client/src/app/components/header/header.component.html - 285 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -462,7 +462,7 @@ apps/client/src/app/components/header/header.component.html - 353 + 351 @@ -574,7 +574,7 @@ apps/client/src/app/components/header/header.component.html - 340 + 338 apps/client/src/app/pages/features/features-page.html @@ -618,11 +618,11 @@ apps/client/src/app/components/header/header.component.html - 296 + 294 apps/client/src/app/components/header/header.component.html - 367 + 365 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -942,31 +942,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 198 + 203 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 206 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 209 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 268 + 273 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 276 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 274 + 279 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 277 + 282 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1266,7 +1266,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 421 + 426 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1306,7 +1306,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 428 + 433 @@ -1362,7 +1362,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 348 + 353 @@ -1386,7 +1386,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 369 @@ -1582,7 +1582,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 333 + 338 @@ -1698,7 +1698,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 377 + 382 libs/ui/src/lib/assistant/assistant.html @@ -1814,7 +1814,7 @@ apps/client/src/app/components/header/header.component.html - 257 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1874,7 +1874,7 @@ Kullanıcı apps/client/src/app/components/header/header.component.html - 223 + 221 @@ -1986,7 +1986,7 @@ apps/client/src/app/components/header/header.component.html - 239 + 237 @@ -1998,7 +1998,7 @@ apps/client/src/app/components/header/header.component.html - 249 + 247 @@ -2010,7 +2010,7 @@ apps/client/src/app/components/header/header.component.html - 273 + 271 @@ -2018,7 +2018,7 @@ Ben apps/client/src/app/components/header/header.component.html - 205 + 203 @@ -2026,7 +2026,7 @@ Ghostfolio'm apps/client/src/app/components/header/header.component.html - 264 + 262 @@ -2034,7 +2034,7 @@ Ghostfolio Hakkında apps/client/src/app/components/header/header.component.html - 305 + 303 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2046,7 +2046,7 @@ Giriş apps/client/src/app/components/header/header.component.html - 396 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2058,7 +2058,7 @@ Haydi Başlayalım apps/client/src/app/components/header/header.component.html - 406 + 404 @@ -2082,7 +2082,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 154 + 157 @@ -2098,7 +2098,7 @@ Korku apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts @@ -2110,7 +2110,7 @@ Açgözlülük apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts @@ -2242,7 +2242,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 245 + 247 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -2478,11 +2478,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 200 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 265 + 270 @@ -2538,7 +2538,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 182 + 187 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2702,7 +2702,7 @@ Üyeliğinizi Yükseltin apps/client/src/app/components/header/header.component.html - 180 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3694,11 +3694,11 @@ Birim Fiyat apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 212 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 285 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3710,7 +3710,7 @@ Hay Allah! Geçmiş döviz kuru alınamadı: apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 234 + 239 @@ -3718,11 +3718,11 @@ Komisyon apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 300 + 305 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 324 + 329 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4362,7 +4362,7 @@ Aboneliği Yenile apps/client/src/app/components/header/header.component.html - 185 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -4834,7 +4834,7 @@ Otomatik apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 36 @@ -4874,7 +4874,7 @@ Bu giriş yöntemini kaldırmayı gerçekten istiyor musunuz? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 230 + 239 @@ -5030,7 +5030,7 @@ Deneysel Özellikler apps/client/src/app/components/user-account-settings/user-account-settings.html - 200 + 202 @@ -5038,7 +5038,7 @@ Gelecek özelliklere göz atın apps/client/src/app/components/user-account-settings/user-account-settings.html - 201 + 203 @@ -5050,7 +5050,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 218 + 220 @@ -5058,7 +5058,7 @@ Verileri Dışa Aktar apps/client/src/app/components/user-account-settings/user-account-settings.html - 226 + 228 @@ -5276,10 +5276,6 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 197 - - libs/ui/src/lib/top-holdings/top-holdings.component.html - 81 - Account @@ -5746,7 +5742,7 @@ Hay Allah! Tarihsel kur verisi elde edilemedi apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 312 + 317 @@ -6570,7 +6566,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 144 + 147 @@ -6578,7 +6574,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 240 @@ -6586,7 +6582,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 273 + 275 @@ -6613,6 +6609,22 @@ 426 + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 301 + + + + Show more + Show more + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 + + - + \ No newline at end of file diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index c7bc327c5..cf3b93035 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -430,7 +430,7 @@ apps/client/src/app/components/header/header.component.html - 382 + 380 apps/client/src/app/components/home-market/home-market.html @@ -453,7 +453,7 @@ apps/client/src/app/components/header/header.component.html - 285 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -472,7 +472,7 @@ apps/client/src/app/components/header/header.component.html - 353 + 351 @@ -581,7 +581,7 @@ apps/client/src/app/components/header/header.component.html - 340 + 338 apps/client/src/app/pages/features/features-page.html @@ -622,11 +622,11 @@ apps/client/src/app/components/header/header.component.html - 296 + 294 apps/client/src/app/components/header/header.component.html - 367 + 365 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -947,31 +947,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 198 + 203 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 206 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 209 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 268 + 273 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 276 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 274 + 279 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 277 + 282 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1252,7 +1252,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 421 + 426 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1291,7 +1291,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 428 + 433 @@ -1349,7 +1349,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 348 + 353 @@ -1372,7 +1372,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 369 @@ -1580,7 +1580,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 333 + 338 @@ -1804,7 +1804,7 @@ apps/client/src/app/components/header/header.component.html - 257 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1859,7 +1859,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 377 + 382 libs/ui/src/lib/assistant/assistant.html @@ -2005,7 +2005,7 @@ apps/client/src/app/components/header/header.component.html - 239 + 237 @@ -2016,7 +2016,7 @@ apps/client/src/app/components/header/header.component.html - 249 + 247 @@ -2027,35 +2027,35 @@ apps/client/src/app/components/header/header.component.html - 273 + 271 Me apps/client/src/app/components/header/header.component.html - 205 + 203 User apps/client/src/app/components/header/header.component.html - 223 + 221 My Ghostfolio apps/client/src/app/components/header/header.component.html - 264 + 262 About Ghostfolio apps/client/src/app/components/header/header.component.html - 305 + 303 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2066,7 +2066,7 @@ Sign in apps/client/src/app/components/header/header.component.html - 396 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2077,7 +2077,7 @@ Get started apps/client/src/app/components/header/header.component.html - 406 + 404 @@ -2099,7 +2099,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 154 + 157 @@ -2113,7 +2113,7 @@ Fear apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts @@ -2124,7 +2124,7 @@ Greed apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts @@ -2241,7 +2241,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 245 + 247 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -2476,11 +2476,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 200 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 265 + 270 @@ -2530,7 +2530,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 182 + 187 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2666,7 +2666,7 @@ Upgrade Plan apps/client/src/app/components/header/header.component.html - 180 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -2814,14 +2814,14 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 36 Do you really want to remove this sign in method? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 230 + 239 @@ -2937,14 +2937,14 @@ Experimental Features apps/client/src/app/components/user-account-settings/user-account-settings.html - 200 + 202 Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 201 + 203 @@ -2955,14 +2955,14 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 218 + 220 Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 226 + 228 @@ -3869,11 +3869,11 @@ Unit Price apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 212 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 285 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3884,18 +3884,18 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 312 + 317 Fee apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 300 + 305 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 324 + 329 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3906,7 +3906,7 @@ Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 234 + 239 @@ -4488,7 +4488,7 @@ Renew Plan apps/client/src/app/components/header/header.component.html - 185 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -5165,10 +5165,6 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 197 - - libs/ui/src/lib/top-holdings/top-holdings.component.html - 81 - Account @@ -5956,21 +5952,21 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 273 + 275 Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 144 + 147 Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 240 @@ -5994,6 +5990,20 @@ 426 + + Oops! There was an error setting up biometric authentication. + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 301 + + + + Show more + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 + + - + \ No newline at end of file diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 65d08b840..d850e64a7 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -443,7 +443,7 @@ apps/client/src/app/components/header/header.component.html - 382 + 380 apps/client/src/app/components/home-market/home-market.html @@ -467,7 +467,7 @@ apps/client/src/app/components/header/header.component.html - 285 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -487,7 +487,7 @@ apps/client/src/app/components/header/header.component.html - 353 + 351 @@ -599,7 +599,7 @@ apps/client/src/app/components/header/header.component.html - 340 + 338 apps/client/src/app/pages/features/features-page.html @@ -643,11 +643,11 @@ apps/client/src/app/components/header/header.component.html - 296 + 294 apps/client/src/app/components/header/header.component.html - 367 + 365 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -987,31 +987,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 198 + 203 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 206 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 209 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 268 + 273 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 276 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 274 + 279 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 277 + 282 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1311,7 +1311,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 421 + 426 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1351,7 +1351,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 428 + 433 @@ -1415,7 +1415,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 348 + 353 @@ -1439,7 +1439,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 369 @@ -1667,7 +1667,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 333 + 338 @@ -1919,7 +1919,7 @@ apps/client/src/app/components/header/header.component.html - 257 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1979,7 +1979,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 377 + 382 libs/ui/src/lib/assistant/assistant.html @@ -2143,7 +2143,7 @@ apps/client/src/app/components/header/header.component.html - 239 + 237 @@ -2155,7 +2155,7 @@ apps/client/src/app/components/header/header.component.html - 249 + 247 @@ -2167,7 +2167,7 @@ apps/client/src/app/components/header/header.component.html - 273 + 271 @@ -2175,7 +2175,7 @@ apps/client/src/app/components/header/header.component.html - 205 + 203 @@ -2183,7 +2183,7 @@ 用户 apps/client/src/app/components/header/header.component.html - 223 + 221 @@ -2191,7 +2191,7 @@ 我的 Ghostfolio apps/client/src/app/components/header/header.component.html - 264 + 262 @@ -2199,7 +2199,7 @@ 关于 Ghostfolio apps/client/src/app/components/header/header.component.html - 305 + 303 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2211,7 +2211,7 @@ 登入 apps/client/src/app/components/header/header.component.html - 396 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2223,7 +2223,7 @@ 开始使用 apps/client/src/app/components/header/header.component.html - 406 + 404 @@ -2247,7 +2247,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 154 + 157 @@ -2263,7 +2263,7 @@ 恐惧 apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts @@ -2275,7 +2275,7 @@ 贪婪 apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts @@ -2407,7 +2407,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 245 + 247 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -2667,11 +2667,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 200 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 265 + 270 @@ -2727,7 +2727,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 182 + 187 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2875,7 +2875,7 @@ 升级计划 apps/client/src/app/components/header/header.component.html - 180 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3039,7 +3039,7 @@ 自动 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 36 @@ -3047,7 +3047,7 @@ 您确实要删除此登录方法吗? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 230 + 239 @@ -3179,7 +3179,7 @@ 实验性功能 apps/client/src/app/components/user-account-settings/user-account-settings.html - 200 + 202 @@ -3187,7 +3187,7 @@ 预览即将推出的功能 apps/client/src/app/components/user-account-settings/user-account-settings.html - 201 + 203 @@ -3199,7 +3199,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 218 + 220 @@ -3207,7 +3207,7 @@ 导出数据 apps/client/src/app/components/user-account-settings/user-account-settings.html - 226 + 228 @@ -4223,11 +4223,11 @@ 单价 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 212 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 285 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4239,7 +4239,7 @@ 哎呀!无法从以下来源获取历史汇率 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 312 + 317 @@ -4247,11 +4247,11 @@ 费用 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 300 + 305 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 324 + 329 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4263,7 +4263,7 @@ 哎呀!无法获取历史汇率 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 234 + 239 @@ -4915,7 +4915,7 @@ 更新计划 apps/client/src/app/components/header/header.component.html - 185 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -5673,10 +5673,6 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 197 - - libs/ui/src/lib/top-holdings/top-holdings.component.html - 81 - Account @@ -6571,7 +6567,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 144 + 147 @@ -6579,7 +6575,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 240 @@ -6587,7 +6583,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 273 + 275 @@ -6614,6 +6610,22 @@ 426 + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 301 + + + + Show more + Show more + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 + + - + \ No newline at end of file diff --git a/libs/ui/src/lib/top-holdings/top-holdings.component.html b/libs/ui/src/lib/top-holdings/top-holdings.component.html index 9c5aba16d..72463da4a 100644 --- a/libs/ui/src/lib/top-holdings/top-holdings.component.html +++ b/libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -78,7 +78,7 @@ @if (dataSource.data.length > pageSize && !isLoading) {
} From 70e633b997fdd39bc92a46c934e72bcc984233ec Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 21 Jun 2024 11:05:35 +0200 Subject: [PATCH 10/10] Feature/upgrade ngx device detector to version 8.0.0 (#3505) * Upgrade ngx-device-detector to version 8.0.0 * Update changelog --- CHANGELOG.md | 1 + package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fa0f883c..1257131cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Set up SSL for local development - Upgraded the _Stripe_ dependencies - Upgraded `marked` from version `9.1.6` to `13.0.0` +- Upgraded `ngx-device-detector` from version `5.0.1` to `8.0.0` - Upgraded `ngx-markdown` from version `17.1.1` to `18.0.0` - Upgraded `zone.js` from version `0.14.5` to `0.14.7` diff --git a/package.json b/package.json index de40b7af0..e36e04d9b 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "marked": "13.0.0", "ms": "3.0.0-canary.1", "ng-extract-i18n-merge": "2.12.0", - "ngx-device-detector": "5.0.1", + "ngx-device-detector": "8.0.0", "ngx-markdown": "18.0.0", "ngx-skeleton-loader": "7.0.0", "ngx-stripe": "18.0.0", diff --git a/yarn.lock b/yarn.lock index 46e934eec..7dd72c813 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16280,10 +16280,10 @@ ng-extract-i18n-merge@2.12.0: "@schematics/angular" "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" xmldoc "^1.1.3" -ngx-device-detector@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ngx-device-detector/-/ngx-device-detector-5.0.1.tgz#da511f0393fff7dab45a3dfa72d40981c5e81e3c" - integrity sha512-hVKaGzyXzy6zeliYyN7runz3eOOsh3tmZ8A6P5MSpHIjVjSx3pUJcobFTKNyHGn/zGS4JFWuhSSb7QmNwmqK9w== +ngx-device-detector@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ngx-device-detector/-/ngx-device-detector-8.0.0.tgz#9d7523fbfc23f7655375ac5ef750e510e709464f" + integrity sha512-ik6EwUKnlN+xwoWHzyJp5+V+QRWYrmpTqAvRwa16xBnAVd7/i3jElN7MZjs/InwcYz7AW3XcSNeu+XRvtHgb9w== dependencies: tslib "^2.0.0"