From 950b2606fdee4609c7557fa109cc0678cc955fcc Mon Sep 17 00:00:00 2001 From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Mon, 8 Sep 2025 21:04:47 +0700 Subject: [PATCH 1/5] Task/migrate rule and rules components to standalone (#5488) * Migrate rule and rules components to standalone * Update changelog --- CHANGELOG.md | 2 ++ .../src/app/components/rule/rule.component.ts | 19 ++++++++++++---- .../src/app/components/rule/rule.module.ts | 22 ------------------- .../app/components/rules/rules.component.ts | 11 ++++++---- .../src/app/components/rules/rules.module.ts | 16 -------------- .../portfolio/x-ray/x-ray-page.component.ts | 4 ++-- 6 files changed, 26 insertions(+), 48 deletions(-) delete mode 100644 apps/client/src/app/components/rule/rule.module.ts delete mode 100644 apps/client/src/app/components/rules/rules.module.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f1694c01..3b0a5567d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Refactored the header component to standalone +- Refactored the rule component to standalone +- Refactored the rules component to standalone ## 2.197.0 - 2025-09-07 diff --git a/apps/client/src/app/components/rule/rule.component.ts b/apps/client/src/app/components/rule/rule.component.ts index f9d7c8664..c38de8bbb 100644 --- a/apps/client/src/app/components/rule/rule.component.ts +++ b/apps/client/src/app/components/rule/rule.component.ts @@ -5,6 +5,7 @@ import { XRayRulesSettings } from '@ghostfolio/common/interfaces'; +import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -13,7 +14,10 @@ import { OnInit, Output } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; import { MatDialog } from '@angular/material/dialog'; +import { MatMenuModule } from '@angular/material/menu'; +import { IonIcon } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { addCircleOutline, @@ -24,19 +28,26 @@ import { warningOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; +import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { Subject, takeUntil } from 'rxjs'; import { IRuleSettingsDialogParams } from './rule-settings-dialog/interfaces/interfaces'; import { GfRuleSettingsDialogComponent } from './rule-settings-dialog/rule-settings-dialog.component'; @Component({ - selector: 'gf-rule', changeDetection: ChangeDetectionStrategy.OnPush, - templateUrl: './rule.component.html', + imports: [ + CommonModule, + IonIcon, + MatButtonModule, + MatMenuModule, + NgxSkeletonLoaderModule + ], + selector: 'gf-rule', styleUrls: ['./rule.component.scss'], - standalone: false + templateUrl: './rule.component.html' }) -export class RuleComponent implements OnInit { +export class GfRuleComponent implements OnInit { @Input() categoryName: string; @Input() hasPermissionToUpdateUserSettings: boolean; @Input() isLoading: boolean; diff --git a/apps/client/src/app/components/rule/rule.module.ts b/apps/client/src/app/components/rule/rule.module.ts deleted file mode 100644 index 43c22e55c..000000000 --- a/apps/client/src/app/components/rule/rule.module.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { MatMenuModule } from '@angular/material/menu'; -import { IonIcon } from '@ionic/angular/standalone'; -import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; - -import { RuleComponent } from './rule.component'; - -@NgModule({ - declarations: [RuleComponent], - exports: [RuleComponent], - imports: [ - CommonModule, - IonIcon, - MatButtonModule, - MatMenuModule, - NgxSkeletonLoaderModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class GfRuleModule {} diff --git a/apps/client/src/app/components/rules/rules.component.ts b/apps/client/src/app/components/rules/rules.component.ts index 26cbb1a62..6379a40fb 100644 --- a/apps/client/src/app/components/rules/rules.component.ts +++ b/apps/client/src/app/components/rules/rules.component.ts @@ -1,4 +1,5 @@ import { UpdateUserSettingDto } from '@ghostfolio/api/app/user/update-user-setting.dto'; +import { GfRuleComponent } from '@ghostfolio/client/components/rule/rule.component'; import { PortfolioReportRule, XRayRulesSettings @@ -11,15 +12,17 @@ import { Input, Output } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; @Component({ - selector: 'gf-rules', changeDetection: ChangeDetectionStrategy.OnPush, - templateUrl: './rules.component.html', + imports: [GfRuleComponent, MatButtonModule, MatCardModule], + selector: 'gf-rules', styleUrls: ['./rules.component.scss'], - standalone: false + templateUrl: './rules.component.html' }) -export class RulesComponent { +export class GfRulesComponent { @Input() categoryName: string; @Input() hasPermissionToUpdateUserSettings: boolean; @Input() isLoading: boolean; diff --git a/apps/client/src/app/components/rules/rules.module.ts b/apps/client/src/app/components/rules/rules.module.ts deleted file mode 100644 index c62cbc3bd..000000000 --- a/apps/client/src/app/components/rules/rules.module.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { GfRuleModule } from '@ghostfolio/client/components/rule/rule.module'; - -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { MatCardModule } from '@angular/material/card'; - -import { RulesComponent } from './rules.component'; - -@NgModule({ - declarations: [RulesComponent], - exports: [RulesComponent], - imports: [CommonModule, GfRuleModule, MatButtonModule, MatCardModule], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class GfRulesModule {} diff --git a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts index c0578b5d7..364564383 100644 --- a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts +++ b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts @@ -1,5 +1,5 @@ import { UpdateUserSettingDto } from '@ghostfolio/api/app/user/update-user-setting.dto'; -import { GfRulesModule } from '@ghostfolio/client/components/rules/rules.module'; +import { GfRulesComponent } from '@ghostfolio/client/components/rules/rules.component'; import { DataService } from '@ghostfolio/client/services/data.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; @@ -26,7 +26,7 @@ import { Subject, takeUntil } from 'rxjs'; @Component({ imports: [ GfPremiumIndicatorComponent, - GfRulesModule, + GfRulesComponent, IonIcon, NgClass, NgxSkeletonLoaderModule From aeb3df56d11eaaaa18480dfc68270038262b5a2b Mon Sep 17 00:00:00 2001 From: David Requeno <108202767+DavidReque@users.noreply.github.com> Date: Tue, 9 Sep 2025 11:44:50 -0600 Subject: [PATCH 2/5] Feature/migrate markets page to standalone (#5492) * Migrate markets page to standalone * Update changelog --- CHANGELOG.md | 1 + apps/client/src/app/app-routing.module.ts | 8 +++---- .../markets/markets-page-routing.module.ts | 22 ----------------- .../pages/markets/markets-page.component.ts | 9 ++++--- .../app/pages/markets/markets-page.module.ts | 14 ----------- .../app/pages/markets/markets-page.routes.ts | 24 +++++++++++++++++++ 6 files changed, 34 insertions(+), 44 deletions(-) delete mode 100644 apps/client/src/app/pages/markets/markets-page-routing.module.ts delete mode 100644 apps/client/src/app/pages/markets/markets-page.module.ts create mode 100644 apps/client/src/app/pages/markets/markets-page.routes.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b0a5567d..447f5dc7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Refactored the markets page to standalone - Refactored the header component to standalone - Refactored the rule component to standalone - Refactored the rules component to standalone diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index 2d4f1b227..53db1f06b 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -1,11 +1,11 @@ -import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; -import { PageTitleStrategy } from '@ghostfolio/client/services/page-title.strategy'; import { publicRoutes, internalRoutes } from '@ghostfolio/common/routes/routes'; import { NgModule } from '@angular/core'; import { RouterModule, Routes, TitleStrategy } from '@angular/router'; +import { AuthGuard } from './core/auth.guard'; import { ModulePreloadService } from './core/module-preload.service'; +import { PageTitleStrategy } from './services/page-title.strategy'; const routes: Routes = [ { @@ -89,9 +89,7 @@ const routes: Routes = [ { path: publicRoutes.markets.path, loadChildren: () => - import('./pages/markets/markets-page.module').then( - (m) => m.MarketsPageModule - ) + import('./pages/markets/markets-page.routes').then((m) => m.routes) }, { path: publicRoutes.openStartup.path, diff --git a/apps/client/src/app/pages/markets/markets-page-routing.module.ts b/apps/client/src/app/pages/markets/markets-page-routing.module.ts deleted file mode 100644 index 05ab9b275..000000000 --- a/apps/client/src/app/pages/markets/markets-page-routing.module.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; -import { publicRoutes } from '@ghostfolio/common/routes/routes'; - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { MarketsPageComponent } from './markets-page.component'; - -const routes: Routes = [ - { - canActivate: [AuthGuard], - component: MarketsPageComponent, - path: '', - title: publicRoutes.markets.title - } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class MarketsPageRoutingModule {} diff --git a/apps/client/src/app/pages/markets/markets-page.component.ts b/apps/client/src/app/pages/markets/markets-page.component.ts index be569233e..2d4a25876 100644 --- a/apps/client/src/app/pages/markets/markets-page.component.ts +++ b/apps/client/src/app/pages/markets/markets-page.component.ts @@ -1,14 +1,17 @@ +import { HomeMarketComponent } from '@ghostfolio/client/components/home-market/home-market.component'; + +import { CommonModule } from '@angular/common'; import { Component, OnDestroy } from '@angular/core'; import { Subject } from 'rxjs'; @Component({ host: { class: 'page' }, + imports: [CommonModule, HomeMarketComponent], selector: 'gf-markets-page', styleUrls: ['./markets-page.scss'], - templateUrl: './markets-page.html', - standalone: false + templateUrl: './markets-page.html' }) -export class MarketsPageComponent implements OnDestroy { +export class GfMarketsPageComponent implements OnDestroy { private unsubscribeSubject = new Subject(); public ngOnDestroy() { diff --git a/apps/client/src/app/pages/markets/markets-page.module.ts b/apps/client/src/app/pages/markets/markets-page.module.ts deleted file mode 100644 index 34938612e..000000000 --- a/apps/client/src/app/pages/markets/markets-page.module.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { HomeMarketComponent } from '@ghostfolio/client/components/home-market/home-market.component'; - -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; - -import { MarketsPageRoutingModule } from './markets-page-routing.module'; -import { MarketsPageComponent } from './markets-page.component'; - -@NgModule({ - declarations: [MarketsPageComponent], - imports: [CommonModule, HomeMarketComponent, MarketsPageRoutingModule], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class MarketsPageModule {} diff --git a/apps/client/src/app/pages/markets/markets-page.routes.ts b/apps/client/src/app/pages/markets/markets-page.routes.ts new file mode 100644 index 000000000..70ebb5553 --- /dev/null +++ b/apps/client/src/app/pages/markets/markets-page.routes.ts @@ -0,0 +1,24 @@ +import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + +import { Routes } from '@angular/router'; + +import { GfMarketsPageComponent } from './markets-page.component'; + +export const routes: Routes = [ + { + canActivate: [AuthGuard], + children: [ + { + path: '', + loadComponent: () => + import('./markets-page.component').then( + (m) => m.GfMarketsPageComponent + ) + } + ], + component: GfMarketsPageComponent, + path: '', + title: publicRoutes.markets.title + } +]; From 2879645dc4705a2f0fe0d0ca02c8d5768c3934f9 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 9 Sep 2025 20:11:52 +0200 Subject: [PATCH 3/5] Feature/extend variations of subscription interstitials (#5486) * Extend variations of subscription interstitials * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/user/user.service.ts | 16 +++- ...scription-interstitial-dialog.component.ts | 2 +- .../subscription-interstitial-dialog.html | 83 +++++++++++++++++++ 4 files changed, 97 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 447f5dc7b..088f4f19c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Extended the variations of the interstitials for the subscription - Refactored the markets page to standalone - Refactored the header component to standalone - Refactored the rule component to standalone diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index a84e10c44..10f8d3744 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -184,6 +184,7 @@ export class UserService { userWhereUniqueInput: Prisma.UserWhereUniqueInput ): Promise { const { + _count, accessesGet, accessToken, accounts, @@ -199,6 +200,11 @@ export class UserService { updatedAt } = await this.prismaService.user.findUnique({ include: { + _count: { + select: { + activities: true + } + }, accessesGet: true, accounts: { include: { platform: true } @@ -210,6 +216,8 @@ export class UserService { where: userWhereUniqueInput }); + const activitiesCount = _count?.activities ?? 0; + const user: UserWithSettings = { accessesGet, accessToken, @@ -404,13 +412,13 @@ export class UserService { ); let frequency = 7; - if (daysSinceRegistration > 720) { + if (activitiesCount > 1000 || daysSinceRegistration > 720) { frequency = 1; - } else if (daysSinceRegistration > 360) { + } else if (activitiesCount > 750 || daysSinceRegistration > 360) { frequency = 2; - } else if (daysSinceRegistration > 180) { + } else if (activitiesCount > 500 || daysSinceRegistration > 180) { frequency = 3; - } else if (daysSinceRegistration > 60) { + } else if (activitiesCount > 250 || daysSinceRegistration > 60) { frequency = 4; } else if (daysSinceRegistration > 30) { frequency = 5; diff --git a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts index 48f17b886..146e30eff 100644 --- a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts +++ b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts @@ -26,7 +26,7 @@ import { SubscriptionInterstitialDialogParams } from './interfaces/interfaces'; }) export class SubscriptionInterstitialDialog implements OnInit { private static readonly SKIP_BUTTON_DELAY_IN_SECONDS = 5; - private static readonly VARIANTS_COUNT = 2; + private static readonly VARIANTS_COUNT = 4; public remainingSkipButtonDelay = SubscriptionInterstitialDialog.SKIP_BUTTON_DELAY_IN_SECONDS; diff --git a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html index 92d9da835..d86ea2816 100644 --- a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html +++ b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -73,6 +73,89 @@ } @case (1) { +
+
+
+
+
+
+
+
+ Get access to 80’000+ tickers from over 50 exchanges +
+

with

+
+ Ghostfolio Premium + +
+
+
+
+ + + Upgrade Plan + + +
+ } + @case (2) { +
+
+
+
+
+
+
+
+ Ghostfolio Premium + +
+

for

+
+ less than $1 + per week +
+
+
+
+ + + Upgrade Plan + + +
+ } + @case (3) {

Date: Tue, 9 Sep 2025 20:12:12 +0200 Subject: [PATCH 4/5] Task/refactor subscription interstitial dialog component to standalone (#5487) * Refactor subscription interstitial dialog component to standalone * Update changelog --- CHANGELOG.md | 1 + apps/client/src/app/app.module.ts | 2 - ...scription-interstitial-dialog.component.ts | 38 +++++++++++++++---- ...subscription-interstitial-dialog.module.ts | 26 ------------- .../src/app/services/user/user.service.ts | 23 ++++++----- 5 files changed, 44 insertions(+), 46 deletions(-) delete mode 100644 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.module.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 088f4f19c..15f4902b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Refactored the header component to standalone - Refactored the rule component to standalone - Refactored the rules component to standalone +- Refactored the subscription interstitial dialog component to standalone ## 2.197.0 - 2025-09-07 diff --git a/apps/client/src/app/app.module.ts b/apps/client/src/app/app.module.ts index 384b83d6c..de52a043d 100644 --- a/apps/client/src/app/app.module.ts +++ b/apps/client/src/app/app.module.ts @@ -31,7 +31,6 @@ import { DateFormats } from './adapter/date-formats'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { GfHeaderComponent } from './components/header/header.component'; -import { GfSubscriptionInterstitialDialogModule } from './components/subscription-interstitial-dialog/subscription-interstitial-dialog.module'; import { authInterceptorProviders } from './core/auth.interceptor'; import { httpResponseInterceptorProviders } from './core/http-response.interceptor'; import { LanguageService } from './core/language.service'; @@ -51,7 +50,6 @@ export function NgxStripeFactory(): string { GfHeaderComponent, GfLogoComponent, GfNotificationModule, - GfSubscriptionInterstitialDialogModule, IonIcon, MatAutocompleteModule, MatChipsModule, diff --git a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts index 146e30eff..7a17ec32d 100644 --- a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts +++ b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts @@ -1,13 +1,24 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes'; +import { GfMembershipCardComponent } from '@ghostfolio/ui/membership-card'; +import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; +import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, + CUSTOM_ELEMENTS_SCHEMA, Inject, OnInit } from '@angular/core'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatButtonModule } from '@angular/material/button'; +import { + MAT_DIALOG_DATA, + MatDialogModule, + MatDialogRef +} from '@angular/material/dialog'; +import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { arrowForwardOutline, checkmarkCircleOutline } from 'ionicons/icons'; import ms from 'ms'; @@ -19,17 +30,26 @@ import { SubscriptionInterstitialDialogParams } from './interfaces/interfaces'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'd-flex flex-column flex-grow-1 h-100' }, + imports: [ + CommonModule, + GfMembershipCardComponent, + GfPremiumIndicatorComponent, + IonIcon, + MatButtonModule, + MatDialogModule, + RouterModule + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-subscription-interstitial-dialog', styleUrls: ['./subscription-interstitial-dialog.scss'], - templateUrl: 'subscription-interstitial-dialog.html', - standalone: false + templateUrl: 'subscription-interstitial-dialog.html' }) -export class SubscriptionInterstitialDialog implements OnInit { +export class GfSubscriptionInterstitialDialogComponent implements OnInit { private static readonly SKIP_BUTTON_DELAY_IN_SECONDS = 5; private static readonly VARIANTS_COUNT = 4; public remainingSkipButtonDelay = - SubscriptionInterstitialDialog.SKIP_BUTTON_DELAY_IN_SECONDS; + GfSubscriptionInterstitialDialogComponent.SKIP_BUTTON_DELAY_IN_SECONDS; public routerLinkPricing = publicRoutes.pricing.routerLink; public variantIndex: number; @@ -38,10 +58,10 @@ export class SubscriptionInterstitialDialog implements OnInit { public constructor( private changeDetectorRef: ChangeDetectorRef, @Inject(MAT_DIALOG_DATA) public data: SubscriptionInterstitialDialogParams, - public dialogRef: MatDialogRef + public dialogRef: MatDialogRef ) { this.variantIndex = Math.floor( - Math.random() * SubscriptionInterstitialDialog.VARIANTS_COUNT + Math.random() * GfSubscriptionInterstitialDialogComponent.VARIANTS_COUNT ); addIcons({ arrowForwardOutline, checkmarkCircleOutline }); @@ -50,7 +70,9 @@ export class SubscriptionInterstitialDialog implements OnInit { public ngOnInit() { interval(ms('1 second')) .pipe( - take(SubscriptionInterstitialDialog.SKIP_BUTTON_DELAY_IN_SECONDS), + take( + GfSubscriptionInterstitialDialogComponent.SKIP_BUTTON_DELAY_IN_SECONDS + ), tap(() => { this.remainingSkipButtonDelay--; diff --git a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.module.ts b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.module.ts deleted file mode 100644 index 2f52f1b3c..000000000 --- a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { GfMembershipCardComponent } from '@ghostfolio/ui/membership-card'; -import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; - -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { MatDialogModule } from '@angular/material/dialog'; -import { RouterModule } from '@angular/router'; -import { IonIcon } from '@ionic/angular/standalone'; - -import { SubscriptionInterstitialDialog } from './subscription-interstitial-dialog.component'; - -@NgModule({ - declarations: [SubscriptionInterstitialDialog], - imports: [ - CommonModule, - GfMembershipCardComponent, - GfPremiumIndicatorComponent, - IonIcon, - MatButtonModule, - MatDialogModule, - RouterModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class GfSubscriptionInterstitialDialogModule {} diff --git a/apps/client/src/app/services/user/user.service.ts b/apps/client/src/app/services/user/user.service.ts index 86b2656d7..f52a52975 100644 --- a/apps/client/src/app/services/user/user.service.ts +++ b/apps/client/src/app/services/user/user.service.ts @@ -12,7 +12,7 @@ import { throwError } from 'rxjs'; import { catchError, map, takeUntil } from 'rxjs/operators'; import { SubscriptionInterstitialDialogParams } from '../../components/subscription-interstitial-dialog/interfaces/interfaces'; -import { SubscriptionInterstitialDialog } from '../../components/subscription-interstitial-dialog/subscription-interstitial-dialog.component'; +import { GfSubscriptionInterstitialDialogComponent } from '../../components/subscription-interstitial-dialog/subscription-interstitial-dialog.component'; import { UserStoreActions } from './user-store.actions'; import { UserStoreState } from './user-store.state'; @@ -116,15 +116,18 @@ export class UserService extends ObservableStore { permissions.enableSubscriptionInterstitial ) ) { - const dialogRef = this.dialog.open(SubscriptionInterstitialDialog, { - autoFocus: false, - data: { - user - } as SubscriptionInterstitialDialogParams, - disableClose: true, - height: this.deviceType === 'mobile' ? '98vh' : '80vh', - width: this.deviceType === 'mobile' ? '100vw' : '50rem' - }); + const dialogRef = this.dialog.open( + GfSubscriptionInterstitialDialogComponent, + { + autoFocus: false, + data: { + user + } as SubscriptionInterstitialDialogParams, + disableClose: true, + height: this.deviceType === 'mobile' ? '98vh' : '80vh', + width: this.deviceType === 'mobile' ? '100vw' : '50rem' + } + ); dialogRef .afterClosed() From 2698395cab6be4ebe447112e1a7891da4cfa8f3a Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 9 Sep 2025 20:23:53 +0200 Subject: [PATCH 5/5] Feature/rename job id column in jobs view of admin control panel (#5493) * Rename job id column * Update changelog --- CHANGELOG.md | 1 + apps/client/src/app/components/admin-jobs/admin-jobs.html | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15f4902b3..4fba0cb84 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 ### Changed - Extended the variations of the interstitials for the subscription +- Renamed the job identifier column in the jobs queue view of the admin control panel - Refactored the markets page to standalone - Refactored the header component to standalone - Refactored the rule component to standalone diff --git a/apps/client/src/app/components/admin-jobs/admin-jobs.html b/apps/client/src/app/components/admin-jobs/admin-jobs.html index 9a82cdbbe..f2bfaa931 100644 --- a/apps/client/src/app/components/admin-jobs/admin-jobs.html +++ b/apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -19,7 +19,7 @@
- # + Job ID {{ element.id }}