diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts index 7540eb54e..65ec9fd7f 100644 --- a/apps/client/src/app/app.component.ts +++ b/apps/client/src/app/app.component.ts @@ -67,17 +67,15 @@ export class AppComponent implements OnDestroy, OnInit { public hasTabs = false; public info: InfoItem; public pageTitle: string; - public routerLinkAbout = ['/' + routes.about]; - public routerLinkAboutChangelog = ['/' + routes.about, routes.changelog]; - public routerLinkAboutLicense = ['/' + routes.about, routes.license]; - public routerLinkAboutPrivacyPolicy = [ - '/' + routes.about, - routes.privacyPolicy - ]; - public routerLinkAboutTermsOfService = [ - '/' + routes.about, - routes.termsOfService - ]; + public routerLinkAbout = publicRoutes.about.routerLink; + public routerLinkAboutChangelog = + publicRoutes.about.subRoutes.changelog.routerLink; + public routerLinkAboutLicense = + publicRoutes.about.subRoutes.license.routerLink; + public routerLinkAboutPrivacyPolicy = + publicRoutes.about.subRoutes.privacyPolicy.routerLink; + public routerLinkAboutTermsOfService = + publicRoutes.about.subRoutes.termsOfService.routerLink; public routerLinkBlog = publicRoutes.blog.routerLink; public routerLinkFaq = publicRoutes.faq.routerLink; public routerLinkFeatures = publicRoutes.features.routerLink; diff --git a/apps/client/src/app/components/header/header.component.ts b/apps/client/src/app/components/header/header.component.ts index f6864fa8b..ccba9f1e9 100644 --- a/apps/client/src/app/components/header/header.component.ts +++ b/apps/client/src/app/components/header/header.component.ts @@ -90,7 +90,7 @@ export class HeaderComponent implements OnChanges { public routeMarkets = publicRoutes.markets.path; public routePricing = publicRoutes.pricing.path; public routeResources = routes.resources; - public routerLinkAbout = ['/' + routes.about]; + public routerLinkAbout = publicRoutes.about.routerLink; public routerLinkAccount = internalRoutes.account.routerLink; public routerLinkAccounts = internalRoutes.accounts.routerLink; public routerLinkAdminControl = ['/' + routes.adminControl]; diff --git a/apps/client/src/app/pages/about/about-page-routing.module.ts b/apps/client/src/app/pages/about/about-page-routing.module.ts index 166bced9e..59621c794 100644 --- a/apps/client/src/app/pages/about/about-page-routing.module.ts +++ b/apps/client/src/app/pages/about/about-page-routing.module.ts @@ -1,8 +1,5 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; -import { - routes as ghostfolioRoutes, - publicRoutes -} from '@ghostfolio/common/routes/routes'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -21,14 +18,14 @@ const routes: Routes = [ ) }, { - path: ghostfolioRoutes.changelog, + path: publicRoutes.about.subRoutes.changelog.path, loadChildren: () => import('./changelog/changelog-page.module').then( (m) => m.ChangelogPageModule ) }, { - path: ghostfolioRoutes.license, + path: publicRoutes.about.subRoutes.license.path, loadChildren: () => import('./license/license-page.module').then( (m) => m.LicensePageModule @@ -42,14 +39,14 @@ const routes: Routes = [ ) }, { - path: ghostfolioRoutes.privacyPolicy, + path: publicRoutes.about.subRoutes.privacyPolicy.path, loadChildren: () => import('./privacy-policy/privacy-policy-page.module').then( (m) => m.PrivacyPolicyPageModule ) }, { - path: ghostfolioRoutes.termsOfService, + path: publicRoutes.about.subRoutes.termsOfService.path, loadChildren: () => import('./terms-of-service/terms-of-service-page.module').then( (m) => m.TermsOfServicePageModule @@ -58,7 +55,7 @@ const routes: Routes = [ ], component: AboutPageComponent, path: '', - title: $localize`About` + title: publicRoutes.about.title } ]; diff --git a/apps/client/src/app/pages/about/about-page.component.ts b/apps/client/src/app/pages/about/about-page.component.ts index 6e53d76b9..249ce5a2d 100644 --- a/apps/client/src/app/pages/about/about-page.component.ts +++ b/apps/client/src/app/pages/about/about-page.component.ts @@ -2,7 +2,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { TabConfiguration, 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 { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -43,18 +43,18 @@ export class AboutPageComponent implements OnDestroy, OnInit { this.tabs = [ { iconName: 'information-circle-outline', - label: $localize`About`, - routerLink: ['/' + routes.about] + label: publicRoutes.about.title, + routerLink: publicRoutes.about.routerLink }, { iconName: 'sparkles-outline', - label: $localize`Changelog`, - routerLink: ['/' + routes.about, routes.changelog] + label: publicRoutes.about.subRoutes.changelog.title, + routerLink: publicRoutes.about.subRoutes.changelog.routerLink }, { iconName: 'ribbon-outline', - label: $localize`License`, - routerLink: ['/' + routes.about, routes.license], + label: publicRoutes.about.subRoutes.license.title, + routerLink: publicRoutes.about.subRoutes.license.routerLink, showCondition: !this.hasPermissionForSubscription } ]; @@ -62,15 +62,15 @@ export class AboutPageComponent implements OnDestroy, OnInit { if (state?.user) { this.tabs.push({ iconName: 'shield-checkmark-outline', - label: $localize`Privacy Policy`, - routerLink: ['/' + routes.about, routes.privacyPolicy], + label: publicRoutes.about.subRoutes.privacyPolicy.title, + routerLink: publicRoutes.about.subRoutes.privacyPolicy.routerLink, showCondition: this.hasPermissionForSubscription }); this.tabs.push({ iconName: 'document-text-outline', - label: $localize`Terms of Service`, - routerLink: ['/' + routes.about, routes.termsOfService], + label: publicRoutes.about.subRoutes.termsOfService.title, + routerLink: publicRoutes.about.subRoutes.termsOfService.routerLink, showCondition: this.hasPermissionForSubscription }); diff --git a/apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts b/apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts index 2aaef8282..d69da3f64 100644 --- a/apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts +++ b/apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -1,4 +1,5 @@ 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'; @@ -10,7 +11,7 @@ const routes: Routes = [ canActivate: [AuthGuard], component: ChangelogPageComponent, path: '', - title: $localize`Changelog` + title: publicRoutes.about.subRoutes.changelog.title } ]; diff --git a/apps/client/src/app/pages/about/license/license-page-routing.module.ts b/apps/client/src/app/pages/about/license/license-page-routing.module.ts index 928eeb0f0..af884e35c 100644 --- a/apps/client/src/app/pages/about/license/license-page-routing.module.ts +++ b/apps/client/src/app/pages/about/license/license-page-routing.module.ts @@ -1,4 +1,5 @@ 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'; @@ -10,7 +11,7 @@ const routes: Routes = [ canActivate: [AuthGuard], component: LicensePageComponent, path: '', - title: $localize`License` + title: publicRoutes.about.subRoutes.license.title } ]; diff --git a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts index eb8dca803..83177bbe8 100644 --- a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts +++ b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -1,4 +1,5 @@ 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'; @@ -10,7 +11,7 @@ const routes: Routes = [ canActivate: [AuthGuard], component: PrivacyPolicyPageComponent, path: '', - title: $localize`Privacy Policy` + title: publicRoutes.about.subRoutes.privacyPolicy.title } ]; diff --git a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts index 4a32e23ed..c2b52a9f5 100644 --- a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts +++ b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts @@ -1,4 +1,5 @@ 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'; @@ -10,7 +11,7 @@ const routes: Routes = [ canActivate: [AuthGuard], component: TermsOfServicePageComponent, path: '', - title: $localize`Terms of Service` + title: publicRoutes.about.subRoutes.termsOfService.title } ]; 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 14d6e19d8..ad1e1ce5a 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 @@ -11,8 +11,9 @@ import { RouterModule } from '@angular/router'; templateUrl: './ghostfolio-2-page.html' }) export class Ghostfolio2PageComponent { - public routerLinkAbout = ['/' + routes.about]; - public routerLinkAboutChangelog = ['/' + routes.about, routes.changelog]; + public routerLinkAbout = publicRoutes.about.routerLink; + public routerLinkAboutChangelog = + publicRoutes.about.subRoutes.changelog.routerLink; public routerLinkBlog = publicRoutes.blog.routerLink; public routerLinkFeatures = publicRoutes.features.routerLink; public routerLinkMarkets = publicRoutes.markets.routerLink; diff --git a/apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts b/apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts index 092e0634b..1cf3f20a5 100644 --- a/apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts @@ -1,4 +1,4 @@ -import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; @@ -11,7 +11,7 @@ import { RouterModule } from '@angular/router'; templateUrl: './hacktoberfest-2023-page.html' }) export class Hacktoberfest2023PageComponent { - public routerLinkAbout = ['/' + routes.about]; + public routerLinkAbout = publicRoutes.about.routerLink; public routerLinkBlog = publicRoutes.blog.routerLink; public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; } 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 f2b821790..7c8b37931 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 { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; @@ -11,7 +11,7 @@ import { RouterModule } from '@angular/router'; templateUrl: './hacktoberfest-2023-debriefing-page.html' }) export class Hacktoberfest2023DebriefingPageComponent { - public routerLinkAbout = ['/' + routes.about]; + public routerLinkAbout = publicRoutes.about.routerLink; public routerLinkBlog = publicRoutes.blog.routerLink; public routerLinkFeatures = publicRoutes.features.routerLink; } diff --git a/apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts b/apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts index f8cc12315..47f61adad 100644 --- a/apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts +++ b/apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts @@ -1,4 +1,4 @@ -import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; @@ -11,7 +11,7 @@ import { RouterModule } from '@angular/router'; templateUrl: './hacktoberfest-2024-page.html' }) export class Hacktoberfest2024PageComponent { - public routerLinkAbout = ['/' + routes.about]; + public routerLinkAbout = publicRoutes.about.routerLink; public routerLinkBlog = publicRoutes.blog.routerLink; public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; } diff --git a/apps/client/src/app/pages/landing/landing-page.component.ts b/apps/client/src/app/pages/landing/landing-page.component.ts index e16778fd3..6212ce56c 100644 --- a/apps/client/src/app/pages/landing/landing-page.component.ts +++ b/apps/client/src/app/pages/landing/landing-page.component.ts @@ -25,7 +25,7 @@ export class LandingPageComponent implements OnDestroy, OnInit { public hasPermissionForStatistics: boolean; public hasPermissionForSubscription: boolean; public hasPermissionToCreateUser: boolean; - public routerLinkAbout = ['/' + routes.about]; + public routerLinkAbout = publicRoutes.about.routerLink; public routerLinkDemo = ['/' + routes.demo]; public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; public routerLinkRegister = publicRoutes.register.routerLink; diff --git a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts index 2f93b83c5..d02bccef4 100644 --- a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts +++ b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts @@ -1,5 +1,5 @@ import { DataService } from '@ghostfolio/client/services/data.service'; -import { routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { ChangeDetectionStrategy, @@ -30,10 +30,8 @@ export class ShowAccessTokenDialog { public isCreateAccountButtonDisabled = true; public isDisclaimerChecked = false; public role: string; - public routerLinkAboutTermsOfService = [ - '/' + routes.about, - routes.termsOfService - ]; + public routerLinkAboutTermsOfService = + publicRoutes.about.subRoutes.termsOfService.routerLink; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts index 1faceedab..0c4589056 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts @@ -1,5 +1,5 @@ import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; -import { routes } from '@ghostfolio/common/routes/routes'; +import { publicRoutes, routes } from '@ghostfolio/common/routes/routes'; import { Component, OnDestroy } from '@angular/core'; import { Subject } from 'rxjs'; @@ -17,7 +17,7 @@ export class PersonalFinanceToolsPageComponent implements OnDestroy { public personalFinanceTools = personalFinanceTools.sort((a, b) => { return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }); }); - public routerLinkAbout = ['/' + routes.about]; + public routerLinkAbout = publicRoutes.about.routerLink; private unsubscribeSubject = new Subject(); 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 c781769aa..b53887ff9 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 @@ -20,7 +20,7 @@ export class GfProductPageComponent implements OnInit { public price: number; public product1: Product; public product2: Product; - public routerLinkAbout = ['/' + routes.about]; + public routerLinkAbout = publicRoutes.about.routerLink; public routerLinkFeatures = publicRoutes.features.routerLink; public routerLinkResourcesPersonalFinanceTools = [ '/' + routes.resources, diff --git a/libs/common/src/lib/routes/routes.ts b/libs/common/src/lib/routes/routes.ts index f940d98bb..c2a509ab8 100644 --- a/libs/common/src/lib/routes/routes.ts +++ b/libs/common/src/lib/routes/routes.ts @@ -22,15 +22,11 @@ export const routes = { // Publicly accessible pages about: $localize`:kebab-case:about`, - changelog: $localize`:kebab-case:changelog`, glossary: $localize`:kebab-case:glossary`, guides: $localize`:kebab-case:guides`, - license: $localize`:kebab-case:license`, markets: $localize`:kebab-case:markets`, openSourceAlternativeTo: $localize`:kebab-case:open-source-alternative-to`, - privacyPolicy: $localize`:kebab-case:privacy-policy`, - resources: $localize`:kebab-case:resources`, - termsOfService: $localize`:kebab-case:terms-of-service` + resources: $localize`:kebab-case:resources` }; export const internalRoutes: Record = { @@ -118,10 +114,42 @@ export const publicRoutes = { path: $localize`:kebab-case:about`, routerLink: ['/' + $localize`:kebab-case:about`], subRoutes: { + changelog: { + path: $localize`:kebab-case:changelog`, + routerLink: [ + '/' + $localize`:kebab-case:about`, + $localize`:kebab-case:changelog` + ], + title: $localize`Changelog` + }, + license: { + path: $localize`:kebab-case:license`, + routerLink: [ + '/' + $localize`:kebab-case:about`, + $localize`:kebab-case:license` + ], + title: $localize`License` + }, ossFriends: { path: 'oss-friends', routerLink: ['/' + $localize`:kebab-case:about`, 'oss-friends'], title: 'OSS Friends' + }, + privacyPolicy: { + path: $localize`:kebab-case:privacy-policy`, + routerLink: [ + '/' + $localize`:kebab-case:about`, + $localize`:kebab-case:privacy-policy` + ], + title: $localize`Privacy Policy` + }, + termsOfService: { + path: $localize`:kebab-case:terms-of-service`, + routerLink: [ + '/' + $localize`:kebab-case:about`, + $localize`:kebab-case:terms-of-service` + ], + title: $localize`Terms of Service` } }, title: $localize`About`