From 2f7425d0a2c687097e3595e51589f77185f07ccc Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 14 Jun 2025 10:46:55 +0200 Subject: [PATCH] Feature/refactor public routes (#4919) * Refactor public routes: features --- apps/client/src/app/app-routing.module.ts | 4 ++-- apps/client/src/app/app.component.ts | 4 ++-- apps/client/src/app/components/header/header.component.ts | 4 ++-- apps/client/src/app/core/auth.guard.ts | 2 +- .../pages/about/overview/about-overview-page.component.ts | 2 +- .../black-friday-2022/black-friday-2022-page.component.ts | 4 ++-- .../1000-stars-on-github-page.component.ts | 4 ++-- ...ur-financial-potential-with-ghostfolio-page.component.ts | 4 ++-- .../exploring-the-path-to-fire-page.component.ts | 4 ++-- .../2023/09/ghostfolio-2/ghostfolio-2-page.component.ts | 4 ++-- .../11/black-week-2023/black-week-2023-page.component.ts | 4 ++-- .../hacktoberfest-2023-debriefing-page.component.ts | 4 ++-- .../11/black-weeks-2024/black-weeks-2024-page.component.ts | 4 ++-- .../app/pages/faq/overview/faq-overview-page.component.ts | 4 ++-- apps/client/src/app/pages/pricing/pricing-page.component.ts | 4 ++-- .../personal-finance-tools/product-page.component.ts | 4 ++-- libs/common/src/lib/routes/routes.ts | 6 +++++- 17 files changed, 35 insertions(+), 31 deletions(-) diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index 5c77368c7..623ea74d2 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -74,8 +74,8 @@ const routes: Routes = [ import('./pages/features/features-page.component').then( (c) => c.GfFeaturesPageComponent ), - path: ghostfolioRoutes.features, - title: $localize`Features` + path: publicRoutes.features.path, + title: publicRoutes.features.title }, { path: internalRoutes.home.path, diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts index 4b9b9f968..0200eeb0e 100644 --- a/apps/client/src/app/app.component.ts +++ b/apps/client/src/app/app.component.ts @@ -80,7 +80,7 @@ export class AppComponent implements OnDestroy, OnInit { ]; public routerLinkBlog = ['/' + routes.blog]; public routerLinkFaq = ['/' + routes.faq]; - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; public routerLinkMarkets = ['/' + routes.markets]; public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; public routerLinkPricing = ['/' + routes.pricing]; @@ -212,7 +212,7 @@ export class AppComponent implements OnDestroy, OnInit { this.showFooter = (this.currentRoute === routes.blog || - this.currentRoute === routes.features || + this.currentRoute === publicRoutes.features.path || this.currentRoute === routes.markets || this.currentRoute === publicRoutes.openStartup.path || this.currentRoute === routes.public || diff --git a/apps/client/src/app/components/header/header.component.ts b/apps/client/src/app/components/header/header.component.ts index d7362b93c..73e843cc5 100644 --- a/apps/client/src/app/components/header/header.component.ts +++ b/apps/client/src/app/components/header/header.component.ts @@ -86,7 +86,7 @@ export class HeaderComponent implements OnChanges { public internalRoutes = internalRoutes; public isMenuOpen: boolean; public routeAbout = routes.about; - public routeFeatures = routes.features; + public routeFeatures = publicRoutes.features.path; public routeMarkets = routes.markets; public routePricing = routes.pricing; public routeResources = routes.resources; @@ -94,7 +94,7 @@ export class HeaderComponent implements OnChanges { public routerLinkAccount = internalRoutes.account.routerLink; public routerLinkAccounts = internalRoutes.accounts.routerLink; public routerLinkAdminControl = ['/' + routes.adminControl]; - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; public routerLinkMarkets = ['/' + routes.markets]; public routerLinkPortfolio = internalRoutes.portfolio.routerLink; public routerLinkPricing = ['/' + routes.pricing]; diff --git a/apps/client/src/app/core/auth.guard.ts b/apps/client/src/app/core/auth.guard.ts index 28af9fd34..a16fa3d75 100644 --- a/apps/client/src/app/core/auth.guard.ts +++ b/apps/client/src/app/core/auth.guard.ts @@ -23,7 +23,7 @@ export class AuthGuard { `/${routes.blog}`, `/${routes.demo}`, `/${routes.faq}`, - `/${routes.features}`, + `/${publicRoutes.features.path}`, `/${routes.markets}`, `/${publicRoutes.openStartup.path}`, `/${routes.pricing}`, diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts index 2b545e1dd..3a530edc9 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts +++ b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -20,7 +20,7 @@ export class AboutOverviewPageComponent implements OnDestroy, OnInit { public isLoggedIn: boolean; public routerLinkBlog = ['/' + routes.blog]; public routerLinkFaq = ['/' + routes.faq]; - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; public user: User; diff --git a/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts b/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts index 0779de28a..fa74d22d0 100644 --- a/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts +++ b/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -1,4 +1,4 @@ -import { routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { Component } from '@angular/core'; @@ -13,6 +13,6 @@ import { RouterModule } from '@angular/router'; }) export class BlackFriday2022PageComponent { public routerLinkBlog = ['/' + routes.blog]; - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; public routerLinkPricing = ['/' + routes.pricing]; } diff --git a/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts index 2cade60f2..6d0b2e3a9 100644 --- a/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts @@ -1,4 +1,4 @@ -import { routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; @@ -12,6 +12,6 @@ import { RouterModule } from '@angular/router'; }) export class ThousandStarsOnGitHubPageComponent { public routerLinkBlog = ['/' + routes.blog]; - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; public routerLinkPricing = ['/' + routes.pricing]; } diff --git a/apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts b/apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts index a115ae6d6..dc75e15eb 100644 --- a/apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts @@ -1,4 +1,4 @@ -import { routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; @@ -12,6 +12,6 @@ import { RouterModule } from '@angular/router'; }) export class UnlockYourFinancialPotentialWithGhostfolioPageComponent { public routerLinkBlog = ['/' + routes.blog]; - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; public routerLinkResources = ['/' + routes.resources]; } diff --git a/apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts b/apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts index 123d4c28a..ffb5599ce 100644 --- a/apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts @@ -1,4 +1,4 @@ -import { routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; @@ -12,5 +12,5 @@ import { RouterModule } from '@angular/router'; }) export class ExploringThePathToFirePageComponent { public routerLinkBlog = ['/' + routes.blog]; - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; } diff --git a/apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts b/apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts index 92f4b0395..251f0cbcb 100644 --- a/apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts @@ -1,4 +1,4 @@ -import { routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; @@ -14,6 +14,6 @@ export class Ghostfolio2PageComponent { public routerLinkAbout = ['/' + routes.about]; public routerLinkAboutChangelog = ['/' + routes.about, routes.changelog]; public routerLinkBlog = ['/' + routes.blog]; - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; public routerLinkMarkets = ['/' + routes.markets]; } diff --git a/apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts b/apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts index 13168c1fa..6cb557c83 100644 --- a/apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts @@ -1,4 +1,4 @@ -import { routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { Component } from '@angular/core'; @@ -13,6 +13,6 @@ import { RouterModule } from '@angular/router'; }) export class BlackWeek2023PageComponent { public routerLinkBlog = ['/' + routes.blog]; - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; public routerLinkPricing = ['/' + routes.pricing]; } diff --git a/apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts b/apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts index e851c9ea1..7ef141f02 100644 --- a/apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts @@ -1,4 +1,4 @@ -import { routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; @@ -13,5 +13,5 @@ import { RouterModule } from '@angular/router'; export class Hacktoberfest2023DebriefingPageComponent { public routerLinkAbout = ['/' + routes.about]; public routerLinkBlog = ['/' + routes.blog]; - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; } diff --git a/apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts b/apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts index 394896470..656a56ca8 100644 --- a/apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts +++ b/apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts @@ -1,4 +1,4 @@ -import { routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { Component } from '@angular/core'; @@ -13,6 +13,6 @@ import { RouterModule } from '@angular/router'; }) export class BlackWeeks2024PageComponent { public routerLinkBlog = ['/' + routes.blog]; - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; public routerLinkPricing = ['/' + routes.pricing]; } diff --git a/apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts b/apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts index 835bc826f..1b27a29a8 100644 --- a/apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts +++ b/apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts @@ -1,6 +1,6 @@ import { UserService } from '@ghostfolio/client/services/user/user.service'; import { User } from '@ghostfolio/common/interfaces'; -import { routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; import { ChangeDetectorRef, Component, OnDestroy } from '@angular/core'; import { Subject, takeUntil } from 'rxjs'; @@ -14,7 +14,7 @@ import { Subject, takeUntil } from 'rxjs'; }) export class FaqOverviewPageComponent implements OnDestroy { public pricingUrl = `https://ghostfol.io/${document.documentElement.lang}/${routes.pricing}`; - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; public user: User; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/pricing/pricing-page.component.ts b/apps/client/src/app/pages/pricing/pricing-page.component.ts index 15d820f56..18f4946d0 100644 --- a/apps/client/src/app/pages/pricing/pricing-page.component.ts +++ b/apps/client/src/app/pages/pricing/pricing-page.component.ts @@ -3,7 +3,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; -import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { translate } from '@ghostfolio/ui/i18n'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; @@ -41,7 +41,7 @@ export class PricingPageComponent implements OnDestroy, OnInit { public professionalDataProviderTooltipPremium = translate( 'PROFESSIONAL_DATA_PROVIDER_TOOLTIP_PREMIUM' ); - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; public routerLinkRegister = publicRoutes.register.routerLink; public user: User; diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts index 42fcbb926..c781769aa 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -1,7 +1,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { Product } from '@ghostfolio/common/interfaces'; import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; -import { routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; import { translate } from '@ghostfolio/ui/i18n'; import { Component, OnInit } from '@angular/core'; @@ -21,7 +21,7 @@ export class GfProductPageComponent implements OnInit { public product1: Product; public product2: Product; public routerLinkAbout = ['/' + routes.about]; - public routerLinkFeatures = ['/' + routes.features]; + public routerLinkFeatures = publicRoutes.features.routerLink; public routerLinkResourcesPersonalFinanceTools = [ '/' + routes.resources, routes.personalFinanceTools diff --git a/libs/common/src/lib/routes/routes.ts b/libs/common/src/lib/routes/routes.ts index 8af199096..6e85a651d 100644 --- a/libs/common/src/lib/routes/routes.ts +++ b/libs/common/src/lib/routes/routes.ts @@ -26,7 +26,6 @@ export const routes = { blog: 'blog', changelog: $localize`:kebab-case:changelog`, faq: $localize`:kebab-case:faq`, - features: $localize`:kebab-case:features`, glossary: $localize`:kebab-case:glossary`, guides: $localize`:kebab-case:guides`, license: $localize`:kebab-case:license`, @@ -121,6 +120,11 @@ export const internalRoutes: Record = { }; export const publicRoutes = { + features: { + path: $localize`:kebab-case:features`, + routerLink: ['/' + $localize`:kebab-case:features`], + title: $localize`Features` + }, openStartup: { path: 'open', routerLink: ['/open'],