Browse Source
Feature/refactor public routes: pricing (#4931 )
* Refactor public routes: pricing
pull/4932/head
Thomas Kaul
2 weeks ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
22 changed files with
40 additions and
36 deletions
apps/client/src/app/app-routing.module.ts
apps/client/src/app/app.component.ts
apps/client/src/app/components/admin-settings/admin-settings.component.ts
apps/client/src/app/components/header/header.component.ts
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
apps/client/src/app/core/auth.guard.ts
apps/client/src/app/core/http-response.interceptor.ts
apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts
apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts
apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts
apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts
apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts
apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts
apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts
apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts
apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts
apps/client/src/app/pages/faq/saas/saas-page.component.ts
apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts
libs/common/src/lib/routes/routes.ts
libs/ui/src/lib/membership-card/membership-card.component.ts
libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
@ -111,7 +111,7 @@ const routes: Routes = [
)
} ,
{
path : ghostfolioRoutes.pricing ,
path : publicRoutes.pricing.path ,
loadChildren : ( ) = >
import ( './pages/pricing/pricing-page.module' ) . then (
( m ) = > m . PricingPageModule
@ -83,7 +83,7 @@ export class AppComponent implements OnDestroy, OnInit {
public routerLinkFeatures = publicRoutes . features . routerLink ;
public routerLinkMarkets = [ '/' + routes . markets ] ;
public routerLinkOpenStartup = publicRoutes . openStartup . routerLink ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
public routerLinkRegister = publicRoutes . register . routerLink ;
public routerLinkResources = [ '/' + routes . resources ] ;
public showFooter = false ;
@ -216,7 +216,7 @@ export class AppComponent implements OnDestroy, OnInit {
this . currentRoute === routes . markets ||
this . currentRoute === publicRoutes . openStartup . path ||
this . currentRoute === routes . public ||
this . currentRoute === r outes. pricing ||
this . currentRoute === publicR outes. pricing . path ||
this . currentRoute === publicRoutes . register . path ||
this . currentRoute === routes . start ) &&
this . deviceType !== 'mobile' ;
@ -10,7 +10,7 @@ import {
DataProviderInfo ,
User
} from '@ghostfolio/common/interfaces' ;
import { r outes } from '@ghostfolio/common/routes/routes' ;
import { publicR outes } from '@ghostfolio/common/routes/routes' ;
import {
ChangeDetectionStrategy ,
@ -72,7 +72,7 @@ export class AdminSettingsComponent implements OnDestroy, OnInit {
const languageCode = this . user . settings . language ;
this . pricingUrl = ` https://ghostfol.io/ ${ languageCode } / ${ r outes. pricing } ` ;
this . pricingUrl = ` https://ghostfol.io/ ${ languageCode } / ${ publicR outes. pricing . path } ` ;
this . changeDetectorRef . markForCheck ( ) ;
}
@ -88,7 +88,7 @@ export class HeaderComponent implements OnChanges {
public routeAbout = routes . about ;
public routeFeatures = publicRoutes . features . path ;
public routeMarkets = routes . markets ;
public routePricing = r outes. pricing ;
public routePricing = publicR outes. pricing . path ;
public routeResources = routes . resources ;
public routerLinkAbout = [ '/' + routes . about ] ;
public routerLinkAccount = internalRoutes . account . routerLink ;
@ -97,7 +97,7 @@ export class HeaderComponent implements OnChanges {
public routerLinkFeatures = publicRoutes . features . routerLink ;
public routerLinkMarkets = [ '/' + routes . markets ] ;
public routerLinkPortfolio = internalRoutes . portfolio . routerLink ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
public routerLinkRegister = publicRoutes . register . routerLink ;
public routerLinkResources = [ '/' + routes . resources ] ;
public routes = routes ;
@ -1,4 +1,4 @@
import { r outes } from '@ghostfolio/common/routes/routes' ;
import { publicR outes } from '@ghostfolio/common/routes/routes' ;
import {
ChangeDetectionStrategy ,
@ -28,7 +28,7 @@ export class SubscriptionInterstitialDialog implements OnInit {
public remainingSkipButtonDelay =
SubscriptionInterstitialDialog . SKIP_BUTTON_DELAY_IN_SECONDS ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
public variantIndex : number ;
private unsubscribeSubject = new Subject < void > ( ) ;
@ -5,7 +5,7 @@ import { UserService } from '@ghostfolio/client/services/user/user.service';
import { getDateFormatString } from '@ghostfolio/common/helper' ;
import { User } from '@ghostfolio/common/interfaces' ;
import { hasPermission , permissions } from '@ghostfolio/common/permissions' ;
import { r outes } from '@ghostfolio/common/routes/routes' ;
import { publicR outes } from '@ghostfolio/common/routes/routes' ;
import {
ChangeDetectionStrategy ,
@ -37,7 +37,7 @@ export class UserAccountMembershipComponent implements OnDestroy {
public hasPermissionToUpdateUserSettings : boolean ;
public price : number ;
public priceId : string ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
public trySubscriptionMail =
'mailto:hi@ghostfol.io?Subject=Ghostfolio Premium Trial&body=Hello%0D%0DI am interested in Ghostfolio Premium. Can you please send me a coupon code to try it for some time?%0D%0DKind regards' ;
public user : User ;
@ -26,7 +26,7 @@ export class AuthGuard {
` / ${ publicRoutes . features . path } ` ,
` / ${ routes . markets } ` ,
` / ${ publicRoutes . openStartup . path } ` ,
` / ${ r outes. pricing } ` ,
` / ${ publicR outes. pricing . path } ` ,
` / ${ routes . public } ` ,
` / ${ publicRoutes . register . path } ` ,
` / ${ routes . resources } `
@ -2,7 +2,7 @@ import { DataService } from '@ghostfolio/client/services/data.service';
import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service' ;
import { WebAuthnService } from '@ghostfolio/client/services/web-authn.service' ;
import { InfoItem } from '@ghostfolio/common/interfaces' ;
import { routes } from '@ghostfolio/common/routes/routes' ;
import { publicRoutes , routes } from '@ghostfolio/common/routes/routes' ;
import {
HTTP_INTERCEPTORS ,
@ -75,7 +75,7 @@ export class HttpResponseInterceptor implements HttpInterceptor {
} ) ;
this . snackBarRef . onAction ( ) . subscribe ( ( ) = > {
this . router . navigate ( [ '/' + routes . pricing ] ) ;
this . router . navigate ( publicRoutes . pricing . routerLink ) ;
} ) ;
}
} else if ( error . status === StatusCodes . INTERNAL_SERVER_ERROR ) {
@ -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 HalloGhostfolioPageComponent {
public routerLinkBlog = [ '/' + routes . blog ] ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
public routerLinkResources = [ '/' + routes . resources ] ;
}
@ -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 HelloGhostfolioPageComponent {
public routerLinkBlog = [ '/' + routes . blog ] ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
public routerLinkResources = [ '/' + routes . resources ] ;
}
@ -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 FirstMonthsInOpenSourcePageComponent {
public routerLinkBlog = [ '/' + routes . blog ] ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
}
@ -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 FiveHundredStarsOnGitHubPageComponent {
public routerLinkBlog = [ '/' + routes . blog ] ;
public routerLinkMarkets = [ '/' + routes . markets ] ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
}
@ -14,5 +14,5 @@ import { RouterModule } from '@angular/router';
export class BlackFriday2022PageComponent {
public routerLinkBlog = [ '/' + routes . blog ] ;
public routerLinkFeatures = publicRoutes . features . routerLink ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
}
@ -13,5 +13,5 @@ import { RouterModule } from '@angular/router';
export class ThousandStarsOnGitHubPageComponent {
public routerLinkBlog = [ '/' + routes . blog ] ;
public routerLinkFeatures = publicRoutes . features . routerLink ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
}
@ -14,5 +14,5 @@ import { RouterModule } from '@angular/router';
export class BlackWeek2023PageComponent {
public routerLinkBlog = [ '/' + routes . blog ] ;
public routerLinkFeatures = publicRoutes . features . routerLink ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
}
@ -14,5 +14,5 @@ import { RouterModule } from '@angular/router';
export class BlackWeeks2024PageComponent {
public routerLinkBlog = [ '/' + routes . blog ] ;
public routerLinkFeatures = publicRoutes . features . routerLink ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
}
@ -1,6 +1,6 @@
import { UserService } from '@ghostfolio/client/services/user/user.service' ;
import { User } from '@ghostfolio/common/interfaces' ;
import { publicRoutes , routes } from '@ghostfolio/common/routes/routes' ;
import { publicRoutes } from '@ghostfolio/common/routes/routes' ;
import { ChangeDetectorRef , Component , OnDestroy } from '@angular/core' ;
import { Subject , takeUntil } from 'rxjs' ;
@ -13,7 +13,7 @@ import { Subject, takeUntil } from 'rxjs';
standalone : false
} )
export class FaqOverviewPageComponent implements OnDestroy {
public pricingUrl = ` https://ghostfol.io/ ${ document . documentElement . lang } / ${ r outes. pricing } ` ;
public pricingUrl = ` https://ghostfol.io/ ${ document . documentElement . lang } / ${ publicR outes. pricing . path } ` ;
public routerLinkFeatures = publicRoutes . features . routerLink ;
public user : User ;
@ -17,7 +17,7 @@ import { Subject, takeUntil } from 'rxjs';
standalone : false
} )
export class SaasPageComponent implements OnDestroy {
public pricingUrl = ` https://ghostfol.io/ ${ document . documentElement . lang } / ${ r outes. pricing } ` ;
public pricingUrl = ` https://ghostfol.io/ ${ document . documentElement . lang } / ${ publicR outes. pricing . path } ` ;
public routerLinkAccount = internalRoutes . account . routerLink ;
public routerLinkAccountMembership = [
'/' + internalRoutes . account . path ,
@ -1,4 +1,4 @@
import { r outes } from '@ghostfolio/common/routes/routes' ;
import { publicR outes } from '@ghostfolio/common/routes/routes' ;
import { Component , OnDestroy } from '@angular/core' ;
import { Subject } from 'rxjs' ;
@ -11,7 +11,7 @@ import { Subject } from 'rxjs';
standalone : false
} )
export class SelfHostingPageComponent implements OnDestroy {
public pricingUrl = ` https://ghostfol.io/ ${ document . documentElement . lang } / ${ r outes. pricing } ` ;
public pricingUrl = ` https://ghostfol.io/ ${ document . documentElement . lang } / ${ publicR outes. pricing . path } ` ;
private unsubscribeSubject = new Subject < void > ( ) ;
@ -31,7 +31,6 @@ export const routes = {
license : $localize ` :kebab-case:license ` ,
markets : $localize ` :kebab-case:markets ` ,
openSourceAlternativeTo : $localize ` :kebab-case:open-source-alternative-to ` ,
pricing : $localize ` :kebab-case:pricing ` ,
privacyPolicy : $localize ` :kebab-case:privacy-policy ` ,
resources : $localize ` :kebab-case:resources ` ,
selfHosting : $localize ` :kebab-case:self-hosting ` ,
@ -141,6 +140,11 @@ export const publicRoutes = {
routerLink : [ '/open' ] ,
title : 'Open Startup'
} ,
pricing : {
path : $localize ` :kebab-case:pricing ` ,
routerLink : [ '/' + $localize ` :kebab-case:pricing ` ] ,
title : $localize ` Pricing `
} ,
register : {
path : $localize ` :kebab-case:register ` ,
routerLink : [ '/' + $localize ` :kebab-case:register ` ] ,
@ -1,4 +1,4 @@
import { r outes } from '@ghostfolio/common/routes/routes' ;
import { publicR outes } from '@ghostfolio/common/routes/routes' ;
import { CommonModule } from '@angular/common' ;
import {
@ -29,7 +29,7 @@ export class GfMembershipCardComponent {
@Output ( ) generateApiKeyClicked = new EventEmitter < void > ( ) ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
public onGenerateApiKey ( event : MouseEvent ) {
event . preventDefault ( ) ;
@ -1,4 +1,4 @@
import { r outes } from '@ghostfolio/common/routes/routes' ;
import { publicR outes } from '@ghostfolio/common/routes/routes' ;
import { CommonModule } from '@angular/common' ;
import {
@ -20,5 +20,5 @@ import { RouterModule } from '@angular/router';
export class GfPremiumIndicatorComponent {
@Input ( ) enableLink = true ;
public routerLinkPricing = [ '/' + routes . pricing ] ;
public routerLinkPricing = publicRoutes . pricing . routerLink ;
}