diff --git a/CHANGELOG.md b/CHANGELOG.md
index 720972d49..833d9f1c3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,11 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
+### Added
+
+- Added the Ghostfolio _LinkedIn_ page to the about page
+- Added the Ghostfolio _LinkedIn_ page to the footer
+
### Changed
+- Optimized the asynchronous operations using `Promise.all()` in the portfolio service (`getPerformance`)
- Improved the symbol lookup in the _Trackinsight_ data enhancer for asset profile data
- Removed the no transactions info component from the holdings table on the home page
- Refactored the show condition of the step by step introduction for new users using the activities count
+- Upgraded `color` from version `4.2.3` to `5.0.0`
### Fixed
diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts
index d4dc42d91..ce03c8024 100644
--- a/apps/api/src/app/portfolio/portfolio.service.ts
+++ b/apps/api/src/app/portfolio/portfolio.service.ts
@@ -1081,19 +1081,18 @@ export class PortfolioService {
const user = await this.userService.user({ id: userId });
const userCurrency = this.getUserCurrency(user);
- const accountBalanceItems =
- await this.accountBalanceService.getAccountBalanceItems({
+ const [accountBalanceItems, { activities }] = await Promise.all([
+ this.accountBalanceService.getAccountBalanceItems({
filters,
userId,
userCurrency
- });
-
- const { activities } =
- await this.orderService.getOrdersForPortfolioCalculator({
+ }),
+ this.orderService.getOrdersForPortfolioCalculator({
filters,
userCurrency,
userId
- });
+ })
+ ]);
if (accountBalanceItems.length === 0 && activities.length === 0) {
return {
diff --git a/apps/client/src/app/app.component.html b/apps/client/src/app/app.component.html
index c6734d1b4..ab188dfcb 100644
--- a/apps/client/src/app/app.component.html
+++ b/apps/client/src/app/app.component.html
@@ -129,6 +129,15 @@
>GitHub
+
+ LinkedIn
+
.
+
+
+
-
+
-
+
@if (hasPermissionForSubscription) {
diff --git a/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts b/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
index f8ce3dd50..64fbe1b74 100644
--- a/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
+++ b/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
@@ -41,7 +41,7 @@ import {
Tooltip
} from 'chart.js';
import 'chartjs-adapter-date-fns';
-import * as Color from 'color';
+import Color from 'color';
import {
add,
addYears,
diff --git a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
index 6319c3cd7..cc3c40d32 100644
--- a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
+++ b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
@@ -29,7 +29,7 @@ import { ArcElement } from 'chart.js';
import { DoughnutController } from 'chart.js';
import { Chart } from 'chart.js';
import ChartDataLabels from 'chartjs-plugin-datalabels';
-import * as Color from 'color';
+import Color from 'color';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
const {
diff --git a/package-lock.json b/package-lock.json
index 601c8f42a..c4392b359 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -58,7 +58,7 @@
"cheerio": "1.0.0",
"class-transformer": "0.5.1",
"class-validator": "0.14.1",
- "color": "4.2.3",
+ "color": "5.0.0",
"countries-and-timezones": "3.7.2",
"countries-list": "3.1.1",
"countup.js": "2.8.0",
@@ -128,7 +128,6 @@
"@trivago/prettier-plugin-sort-imports": "5.2.2",
"@types/big.js": "6.2.2",
"@types/cache-manager": "4.0.6",
- "@types/color": "4.2.0",
"@types/google-spreadsheet": "3.1.5",
"@types/jest": "29.5.13",
"@types/lodash": "4.17.7",
@@ -10705,33 +10704,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@types/color": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@types/color/-/color-4.2.0.tgz",
- "integrity": "sha512-6+xrIRImMtGAL2X3qYkd02Mgs+gFGs+WsK0b7VVMaO4mYRISwyTjcqNrO0mNSmYEoq++rSLDB2F5HDNmqfOe+A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/color-convert": "*"
- }
- },
- "node_modules/@types/color-convert": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.4.tgz",
- "integrity": "sha512-Ub1MmDdyZ7mX//g25uBAoH/mWGd9swVbt8BseymnaE18SU4po/PjmCrHxqIIRjBo3hV/vh1KGr0eMxUhp+t+dQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/color-name": "^1.1.0"
- }
- },
- "node_modules/@types/color-name": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.5.tgz",
- "integrity": "sha512-j2K5UJqGTxeesj6oQuGpMgifpT5k9HprgQd8D1Y0lOFqKHl3PJu5GMeS4Y5EgjS55AE6OQxf8mPED9uaGbf4Cg==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/@types/connect": {
"version": "3.4.38",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
@@ -14304,16 +14276,16 @@
"license": "MIT"
},
"node_modules/color": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
- "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/color/-/color-5.0.0.tgz",
+ "integrity": "sha512-16BlyiuyLq3MLxpRWyOTiWsO3ii/eLQLJUQXBSNcxMBBSnyt1ee9YUdaozQp03ifwm5woztEZGDbk9RGVuCsdw==",
"license": "MIT",
"dependencies": {
- "color-convert": "^2.0.1",
- "color-string": "^1.9.0"
+ "color-convert": "^3.0.1",
+ "color-string": "^2.0.0"
},
"engines": {
- "node": ">=12.5.0"
+ "node": ">=18"
}
},
"node_modules/color-convert": {
@@ -14335,13 +14307,45 @@
"license": "MIT"
},
"node_modules/color-string": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
- "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.0.1.tgz",
+ "integrity": "sha512-5z9FbYTZPAo8iKsNEqRNv+OlpBbDcoE+SY9GjLfDUHEfcNNV7tS9eSAlFHEaub/r5tBL9LtskAeq1l9SaoZ5tQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/color-string/node_modules/color-name": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz",
+ "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
+ "node_modules/color/node_modules/color-convert": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.0.1.tgz",
+ "integrity": "sha512-5kQah2eolfQV7HCrxtsBBArPfT5dwaKYMCXeMQsdRO7ihTO/cuNLGjd50ITCDn+ZU/YbS0Go64SjP9154eopxg==",
"license": "MIT",
"dependencies": {
- "color-name": "^1.0.0",
- "simple-swizzle": "^0.2.2"
+ "color-name": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.6"
+ }
+ },
+ "node_modules/color/node_modules/color-name": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz",
+ "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
}
},
"node_modules/colord": {
@@ -28927,21 +28931,6 @@
"integrity": "sha512-rijcxtwx2b4Bje3sqeIqw5EeW7UlOIC4YfOdwqIKacpvRQ/D78bWg/4/0m5e0U91oKvlGh7LlJuZCu07ISCC7w==",
"license": "ISC"
},
- "node_modules/simple-swizzle": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
- "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
- "license": "MIT",
- "dependencies": {
- "is-arrayish": "^0.3.1"
- }
- },
- "node_modules/simple-swizzle/node_modules/is-arrayish": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
- "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
- "license": "MIT"
- },
"node_modules/sirv": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz",
diff --git a/package.json b/package.json
index d49ce5037..144258f26 100644
--- a/package.json
+++ b/package.json
@@ -104,7 +104,7 @@
"cheerio": "1.0.0",
"class-transformer": "0.5.1",
"class-validator": "0.14.1",
- "color": "4.2.3",
+ "color": "5.0.0",
"countries-and-timezones": "3.7.2",
"countries-list": "3.1.1",
"countup.js": "2.8.0",
@@ -174,7 +174,6 @@
"@trivago/prettier-plugin-sort-imports": "5.2.2",
"@types/big.js": "6.2.2",
"@types/cache-manager": "4.0.6",
- "@types/color": "4.2.0",
"@types/google-spreadsheet": "3.1.5",
"@types/jest": "29.5.13",
"@types/lodash": "4.17.7",