Browse Source

added module & template file, updated webmanifest; moved out of app.module

aRonnieAlsop 2 weeks ago
committed by Thomas Kaul
parent
commit
e3ac70b2a4
  1. 8
      apps/api/src/app/app.module.ts
  2. 65
      apps/api/src/app/webmanifest/webmanifest.controller.ts
  3. 9
      apps/api/src/app/webmanifest/webmanifest.module.ts
  4. 32
      apps/api/src/assets/site.webmanifest

8
apps/api/src/app/app.module.ts

@ -22,7 +22,6 @@ import { ServeStaticModule } from '@nestjs/serve-static';
import { StatusCodes } from 'http-status-codes'; import { StatusCodes } from 'http-status-codes';
import { join } from 'path'; import { join } from 'path';
import { ConfigurationService } from '../services/configuration/configuration.service';
import { AccessModule } from './access/access.module'; import { AccessModule } from './access/access.module';
import { AccountModule } from './account/account.module'; import { AccountModule } from './account/account.module';
import { AdminModule } from './admin/admin.module'; import { AdminModule } from './admin/admin.module';
@ -52,10 +51,9 @@ import { SitemapModule } from './sitemap/sitemap.module';
import { SubscriptionModule } from './subscription/subscription.module'; import { SubscriptionModule } from './subscription/subscription.module';
import { SymbolModule } from './symbol/symbol.module'; import { SymbolModule } from './symbol/symbol.module';
import { UserModule } from './user/user.module'; import { UserModule } from './user/user.module';
import { WebManifestController } from './webmanifest/webmanifest.controller';
@Module({ @Module({
controllers: [AppController, WebManifestController], controllers: [AppController],
imports: [ imports: [
AdminModule, AdminModule,
AccessModule, AccessModule,
@ -130,6 +128,6 @@ import { WebManifestController } from './webmanifest/webmanifest.controller';
TwitterBotModule, TwitterBotModule,
UserModule UserModule
], ],
providers: [ConfigurationService, CronService] providers: [CronService]
}) })
export class AppModule {} export class AppModule {}

65
apps/api/src/app/webmanifest/webmanifest.controller.ts

@ -1,50 +1,31 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { Controller, Get, Param, Res, Version, VERSION_NEUTRAL } from '@nestjs/common';
import { Controller, Get, Param, Res } from '@nestjs/common';
import { Response } from 'express'; import { Response } from 'express';
import { interpolate } from '@ghostfolio/common/helper';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import * as fs from 'fs';
import * as path from 'path';
@Controller('site.webmanifest') @Controller('assets')
export class WebManifestController { export class WebManifestController {
constructor(private readonly configService: ConfigurationService) {} public webManifestTemplate: string;
@Get('/:languageCode') public constructor(public readonly configService: ConfigurationService) {
getWebManifest( try {
@Param('languageCode') languageCode: string, this.webManifestTemplate = fs.readFileSync(
@Res() res: Response path.resolve(__dirname, '../../assets/site.webmanifest'),
) { 'utf8'
const rootUrl = this.configService.get('ROOT_URL'); );
} catch (error) {
console.error('Error reading site.webmanifest:', error);
this.webManifestTemplate = '';
}
}
const webManifest = { @Get('/:languageCode/site.webmanifest')
background_color: '#FFFFFF', @Version(VERSION_NEUTRAL)
categories: ['finance', 'utilities'], public getWebManifest(@Param('languageCode') languageCode: string, @Res() res: Response): void {
description: 'Open Source Wealth Management Software', const rootUrl = this.configService.get('ROOT_URL') || 'https://default.url.com';
display: 'standalone', const webManifest = interpolate(this.webManifestTemplate, { languageCode, rootUrl });
icons: [
{
sizes: '192x192',
src: '/assets/android-chrome-192x192.png',
type: 'image/png'
},
{
purpose: 'any',
sizes: '512x512',
src: '/assets/android-chrome-512x512.png',
type: 'image/png'
},
{
purpose: 'maskable',
sizes: '512x512',
src: '/assets/android-chrome-512x512.png',
type: 'image/png'
}
],
name: 'Ghostfolio',
orientation: 'portrait',
short_name: 'Ghostfolio',
start_url: `/${languageCode}/`, // Dynamic Language Support
theme_color: '#FFFFFF',
url: rootUrl
};
res.setHeader('Content-Type', 'application/json'); res.setHeader('Content-Type', 'application/json');
res.send(webManifest); res.send(webManifest);

9
apps/api/src/app/webmanifest/webmanifest.module.ts

@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { WebManifestController } from './webmanifest.controller';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
@Module({
controllers: [WebManifestController],
providers: [ConfigurationService],
})
export class WebManifestModule {}

32
apps/api/src/assets/site.webmanifest

@ -0,0 +1,32 @@
{
"background_color": "#FFFFFF",
"categories": ["finance", "utilities"],
"description": "Open Source Wealth Management Software",
"display": "standalone",
"icons": [
{
"sizes": "192x192",
"src": "/assets/android-chrome-192x192.png",
"type": "image/png"
},
{
"purpose": "any",
"sizes": "512x512",
"src": "/assets/android-chrome-512x512.png",
"type": "image/png"
},
{
"purpose": "maskable",
"sizes": "512x512",
"src": "/assets/android-chrome-512x512.png",
"type": "image/png"
}
],
"name": "Ghostfolio",
"orientation": "portrait",
"short_name": "Ghostfolio",
"start_url": "/${languageCode}/",
"theme_color": "#FFFFFF",
"url": "${rootUrl}"
}
Loading…
Cancel
Save