Browse Source

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

release/2.147.0-beta.1
aRonnieAlsop 6 days 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 { join } from 'path';
import { ConfigurationService } from '../services/configuration/configuration.service';
import { AccessModule } from './access/access.module';
import { AccountModule } from './account/account.module';
import { AdminModule } from './admin/admin.module';
@ -52,10 +51,9 @@ import { SitemapModule } from './sitemap/sitemap.module';
import { SubscriptionModule } from './subscription/subscription.module';
import { SymbolModule } from './symbol/symbol.module';
import { UserModule } from './user/user.module';
import { WebManifestController } from './webmanifest/webmanifest.controller';
@Module({
controllers: [AppController, WebManifestController],
controllers: [AppController],
imports: [
AdminModule,
AccessModule,
@ -130,6 +128,6 @@ import { WebManifestController } from './webmanifest/webmanifest.controller';
TwitterBotModule,
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 } from '@nestjs/common';
import { Controller, Get, Param, Res, Version, VERSION_NEUTRAL } from '@nestjs/common';
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 {
constructor(private readonly configService: ConfigurationService) {}
public webManifestTemplate: string;
@Get('/:languageCode')
getWebManifest(
@Param('languageCode') languageCode: string,
@Res() res: Response
) {
const rootUrl = this.configService.get('ROOT_URL');
public constructor(public readonly configService: ConfigurationService) {
try {
this.webManifestTemplate = fs.readFileSync(
path.resolve(__dirname, '../../assets/site.webmanifest'),
'utf8'
);
} catch (error) {
console.error('Error reading site.webmanifest:', error);
this.webManifestTemplate = '';
}
}
const webManifest = {
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}/`, // Dynamic Language Support
theme_color: '#FFFFFF',
url: rootUrl
};
@Get('/:languageCode/site.webmanifest')
@Version(VERSION_NEUTRAL)
public getWebManifest(@Param('languageCode') languageCode: string, @Res() res: Response): void {
const rootUrl = this.configService.get('ROOT_URL') || 'https://default.url.com';
const webManifest = interpolate(this.webManifestTemplate, { languageCode, rootUrl });
res.setHeader('Content-Type', 'application/json');
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