Browse Source

Feature/refactor sitemap module (part 2) (#4985)

* Refactor sitemap module
pull/4986/head
Thomas Kaul 2 weeks ago
committed by GitHub
parent
commit
314b121584
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 3
      apps/api/src/app/endpoints/sitemap/sitemap.module.ts
  2. 57
      apps/api/src/app/endpoints/sitemap/sitemap.service.ts
  3. 18
      libs/common/src/lib/routes/routes.ts

3
apps/api/src/app/endpoints/sitemap/sitemap.module.ts

@ -1,4 +1,5 @@
import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module';
import { I18nModule } from '@ghostfolio/api/services/i18n/i18n.module';
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
@ -7,7 +8,7 @@ import { SitemapService } from './sitemap.service';
@Module({ @Module({
controllers: [SitemapController], controllers: [SitemapController],
imports: [ConfigurationModule], imports: [ConfigurationModule, I18nModule],
providers: [SitemapService] providers: [SitemapService]
}) })
export class SitemapModule {} export class SitemapModule {}

57
apps/api/src/app/endpoints/sitemap/sitemap.service.ts

@ -1,42 +1,39 @@
import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service';
import { SUPPORTED_LANGUAGE_CODES } from '@ghostfolio/common/config';
import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
@Injectable() @Injectable()
export class SitemapService { export class SitemapService {
public constructor(private readonly i18nService: I18nService) {}
public getPersonalFinanceTools({ currentDate }: { currentDate: string }) { public getPersonalFinanceTools({ currentDate }: { currentDate: string }) {
return personalFinanceTools return personalFinanceTools
.map(({ alias, key }) => { .map(({ alias, key }) => {
return [ return SUPPORTED_LANGUAGE_CODES.map((languageCode) => {
'<url>', const resourcesPath = this.i18nService.getTranslation({
` <loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-${alias ?? key}</loc>`, languageCode,
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`, id: 'routes.resources'
'</url>', });
'<url>',
` <loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-${alias ?? key}</loc>`, const personalFinanceToolsPath = this.i18nService.getTranslation({
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`, languageCode,
'</url>', id: 'routes.resources.personalFinanceTools'
'<url>', });
` <loc>https://ghostfol.io/es/recursos/personal-finance-tools/alternativa-de-software-libre-a-${alias ?? key}</loc>`,
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`, const openSourceAlternativeToPath = this.i18nService.getTranslation({
'</url>', languageCode,
'<url>', id: 'routes.resources.personalFinanceTools.openSourceAlternativeTo'
` <loc>https://ghostfol.io/fr/ressources/personal-finance-tools/alternative-open-source-a-${alias ?? key}</loc>`, });
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`,
'</url>', return [
'<url>', '<url>',
` <loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-${alias ?? key}</loc>`, ` <loc>https://ghostfol.io/${languageCode}/${resourcesPath}/${personalFinanceToolsPath}/${openSourceAlternativeToPath}-${alias ?? key}</loc>`,
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`, ` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`,
'</url>', '</url>'
'<url>', ].join('\n');
` <loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-${alias ?? key}</loc>`, });
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`,
'</url>',
'<url>',
` <loc>https://ghostfol.io/pt/recursos/personal-finance-tools/alternativa-de-software-livre-ao-${alias ?? key}</loc>`,
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`,
'</url>'
].join('\n');
}) })
.join('\n'); .join('\n');
} }

18
libs/common/src/lib/routes/routes.ts

@ -261,13 +261,13 @@ export const publicRoutes = {
title: $localize`Registration` title: $localize`Registration`
}, },
resources: { resources: {
path: $localize`:kebab-case:resources`, path: $localize`:kebab-case@@routes.resources:resources`,
routerLink: ['/' + $localize`:kebab-case:resources`], routerLink: ['/' + $localize`:kebab-case@@routes.resources:resources`],
subRoutes: { subRoutes: {
glossary: { glossary: {
path: $localize`:kebab-case:glossary`, path: $localize`:kebab-case:glossary`,
routerLink: [ routerLink: [
'/' + $localize`:kebab-case:resources`, '/' + $localize`:kebab-case@@routes.resources:resources`,
$localize`:kebab-case:glossary` $localize`:kebab-case:glossary`
], ],
title: $localize`Glossary` title: $localize`Glossary`
@ -275,7 +275,7 @@ export const publicRoutes = {
guides: { guides: {
path: $localize`:kebab-case:guides`, path: $localize`:kebab-case:guides`,
routerLink: [ routerLink: [
'/' + $localize`:kebab-case:resources`, '/' + $localize`:kebab-case@@routes.resources:resources`,
$localize`:kebab-case:guides` $localize`:kebab-case:guides`
], ],
title: $localize`Guides` title: $localize`Guides`
@ -283,20 +283,20 @@ export const publicRoutes = {
markets: { markets: {
path: $localize`:kebab-case:markets`, path: $localize`:kebab-case:markets`,
routerLink: [ routerLink: [
'/' + $localize`:kebab-case:resources`, '/' + $localize`:kebab-case@@routes.resources:resources`,
$localize`:kebab-case:markets` $localize`:kebab-case:markets`
], ],
title: $localize`Markets` title: $localize`Markets`
}, },
personalFinanceTools: { personalFinanceTools: {
path: 'personal-finance-tools', path: $localize`:kebab-case@@routes.resources.personalFinanceTools:personal-finance-tools`,
routerLink: [ routerLink: [
'/' + $localize`:kebab-case:resources`, '/' + $localize`:kebab-case@@routes.resources:resources`,
'personal-finance-tools' $localize`:kebab-case@@routes.resources.personalFinanceTools:personal-finance-tools`
], ],
subRoutes: { subRoutes: {
product: { product: {
path: $localize`:kebab-case:open-source-alternative-to`, path: $localize`:kebab-case@@routes.resources.personalFinanceTools.openSourceAlternativeTo:open-source-alternative-to`,
title: $localize`Open Source Alternative to` title: $localize`Open Source Alternative to`
} }
}, },

Loading…
Cancel
Save