Release 1.180.1 (#1170)
This commit is contained in:
parent
20195b2b1a
commit
52f0fb5ab8
@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## 1.180.0 - 18.08.2022
|
||||
## 1.180.1 - 18.08.2022
|
||||
|
||||
### Added
|
||||
|
||||
|
@ -1,39 +1,57 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
|
||||
import { ConfigurationService } from '@ghostfolio/api/services/configuration.service';
|
||||
import { DEFAULT_LANGUAGE_CODE } from '@ghostfolio/common/config';
|
||||
import { Injectable, Logger, NestMiddleware } from '@nestjs/common';
|
||||
import { Injectable, NestMiddleware } from '@nestjs/common';
|
||||
import { NextFunction, Request, Response } from 'express';
|
||||
|
||||
@Injectable()
|
||||
export class FrontendMiddleware implements NestMiddleware {
|
||||
use(req: Request, res: Response, next: NextFunction) {
|
||||
if (req.url.includes('cover.png')) {
|
||||
Logger.log(`Referer: ${req.headers.referer}`, 'FrontendMiddleware');
|
||||
public indexHtmlDe = fs.readFileSync(
|
||||
this.getPathOfIndexHtmlFile('de'),
|
||||
'utf8'
|
||||
);
|
||||
public indexHtmlEn = fs.readFileSync(
|
||||
this.getPathOfIndexHtmlFile(DEFAULT_LANGUAGE_CODE),
|
||||
'utf8'
|
||||
);
|
||||
|
||||
// Resolve feature graphic for blog post
|
||||
if (req.headers.referer?.includes('500-stars-on-github')) {
|
||||
res.sendFile(
|
||||
path.join(
|
||||
__dirname,
|
||||
'..',
|
||||
'client',
|
||||
'assets',
|
||||
'images',
|
||||
'blog',
|
||||
'500-stars-on-github.jpg'
|
||||
)
|
||||
);
|
||||
} else {
|
||||
// Skip
|
||||
next();
|
||||
}
|
||||
} else if (req.path.startsWith('/api/') || this.isFileRequest(req.url)) {
|
||||
public constructor(
|
||||
private readonly configurationService: ConfigurationService
|
||||
) {}
|
||||
|
||||
public use(req: Request, res: Response, next: NextFunction) {
|
||||
let featureGraphicPath = 'assets/cover.png';
|
||||
|
||||
if (
|
||||
req.path === '/en/blog/2022/08/500-stars-on-github' ||
|
||||
req.path === '/en/blog/2022/08/500-stars-on-github/'
|
||||
) {
|
||||
featureGraphicPath = 'assets/images/blog/500-stars-on-github.jpg';
|
||||
}
|
||||
|
||||
if (req.path.startsWith('/api/') || this.isFileRequest(req.url)) {
|
||||
// Skip
|
||||
next();
|
||||
} else if (req.path.startsWith('/de/')) {
|
||||
res.sendFile(this.getPathOfIndexHtmlFile('de'));
|
||||
} else if (req.path === '/de' || req.path.startsWith('/de/')) {
|
||||
res.send(
|
||||
this.interpolate(this.indexHtmlDe, {
|
||||
featureGraphicPath,
|
||||
languageCode: 'de',
|
||||
path: req.path,
|
||||
rootUrl: this.configurationService.get('ROOT_URL')
|
||||
})
|
||||
);
|
||||
} else {
|
||||
res.sendFile(this.getPathOfIndexHtmlFile(DEFAULT_LANGUAGE_CODE));
|
||||
res.send(
|
||||
this.interpolate(this.indexHtmlEn, {
|
||||
featureGraphicPath,
|
||||
languageCode: DEFAULT_LANGUAGE_CODE,
|
||||
path: req.path,
|
||||
rootUrl: this.configurationService.get('ROOT_URL')
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,6 +59,16 @@ export class FrontendMiddleware implements NestMiddleware {
|
||||
return path.join(__dirname, '..', 'client', aLocale, 'index.html');
|
||||
}
|
||||
|
||||
private interpolate(template: string, context: any) {
|
||||
return template.replace(/[$]{([^}]+)}/g, (_, objectPath) => {
|
||||
const properties = objectPath.split('.');
|
||||
return properties.reduce(
|
||||
(previous, current) => previous?.[current],
|
||||
context
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
private isFileRequest(filename: string) {
|
||||
if (filename === '/assets/LICENSE') {
|
||||
return true;
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="h-100 position-relative" lang="en">
|
||||
<html class="h-100 position-relative" lang="${languageCode}">
|
||||
<head>
|
||||
<title>Ghostfolio – Open Source Wealth Management Software</title>
|
||||
<base href="/" />
|
||||
@ -19,7 +19,7 @@
|
||||
name="twitter:description"
|
||||
content="Ghostfolio is a lightweight wealth management application for individuals to keep track of stocks, ETFs or cryptocurrencies"
|
||||
/>
|
||||
<meta name="twitter:image" content="https://ghostfol.io/assets/cover.png" />
|
||||
<meta name="twitter:image" content="${rootUrl}/${featureGraphicPath}" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content="Ghostfolio – Open Source Wealth Management Software"
|
||||
@ -34,8 +34,8 @@
|
||||
content="Ghostfolio – Open Source Wealth Management Software"
|
||||
/>
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://ghostfol.io" />
|
||||
<meta property="og:image" content="https://ghostfol.io/assets/cover.png" />
|
||||
<meta property="og:url" content="${rootUrl}${path}" />
|
||||
<meta property="og:image" content="${rootUrl}/${featureGraphicPath}" />
|
||||
<meta property="og:updated_time" content="2022-08-18T00:00:00+00:00" />
|
||||
<meta
|
||||
property="og:site_name"
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ghostfolio",
|
||||
"version": "1.180.0",
|
||||
"version": "1.180.1",
|
||||
"homepage": "https://ghostfol.io",
|
||||
"license": "AGPL-3.0",
|
||||
"scripts": {
|
||||
|
Loading…
x
Reference in New Issue
Block a user