diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b574b9cf..799d99d99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,14 +10,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Copy logic of `GhostfolioScraperApiService` to `ManualService` +- Improved the content of the landing page +- Improved the content of the Frequently Asked Questions (FAQ) page - Set the exposed port as an environment variable (`PORT`) in `Dockerfile` +- Migrated the style of `AboutPageModule` to `@angular/material` `15` (mdc) +- Migrated the style of `BlogPageModule` to `@angular/material` `15` (mdc) +- Migrated the style of `ChangelogPageModule` to `@angular/material` `15` (mdc) +- Migrated the style of `ResourcesPageModule` to `@angular/material` `15` (mdc) - Upgraded `chart.js` from version `4.0.1` to `4.2.0` - Upgraded `ionicons` from version `6.0.4` to `6.1.2` - Upgraded `prettier` from version `2.8.1` to `2.8.4` +- Upgraded `prisma` from version `4.9.0` to `4.10.1` ### Fixed - Fixed an issue on the landing page caused by the global heat map of subscribers +- Fixed the links in the interstitial for the subscription ### Todo diff --git a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html index 22ba74715..061b43e3d 100644 --- a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html +++ b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -1,6 +1,9 @@

Ghostfolio Premium - +

@@ -28,7 +31,7 @@

  • - and more Features... + and more Features...
  • Refine your personal investment strategy now.

    diff --git a/apps/client/src/app/pages/about/about-page.html b/apps/client/src/app/pages/about/about-page.html index a6b688944..0ce83fb5c 100644 --- a/apps/client/src/app/pages/about/about-page.html +++ b/apps/client/src/app/pages/about/about-page.html @@ -119,7 +119,7 @@

    Ghostfolio in Numbers

    - +
    diff --git a/apps/client/src/app/pages/about/about-page.module.ts b/apps/client/src/app/pages/about/about-page.module.ts index 6aa433871..ab1be9b84 100644 --- a/apps/client/src/app/pages/about/about-page.module.ts +++ b/apps/client/src/app/pages/about/about-page.module.ts @@ -1,7 +1,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button'; -import { MatLegacyCardModule as MatCardModule } from '@angular/material/legacy-card'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; import { GfValueModule } from '@ghostfolio/ui/value'; import { AboutPageRoutingModule } from './about-page-routing.module'; diff --git a/apps/client/src/app/pages/about/changelog/changelog-page.html b/apps/client/src/app/pages/about/changelog/changelog-page.html index ac462b147..b3bc1e6ec 100644 --- a/apps/client/src/app/pages/about/changelog/changelog-page.html +++ b/apps/client/src/app/pages/about/changelog/changelog-page.html @@ -2,7 +2,7 @@

    Changelog

    - + @@ -13,7 +13,7 @@

    License

    - + diff --git a/apps/client/src/app/pages/about/changelog/changelog-page.module.ts b/apps/client/src/app/pages/about/changelog/changelog-page.module.ts index aba85a860..ba4788c2b 100644 --- a/apps/client/src/app/pages/about/changelog/changelog-page.module.ts +++ b/apps/client/src/app/pages/about/changelog/changelog-page.module.ts @@ -1,6 +1,6 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatLegacyCardModule as MatCardModule } from '@angular/material/legacy-card'; +import { MatCardModule } from '@angular/material/card'; import { MarkdownModule } from 'ngx-markdown'; import { ChangelogPageRoutingModule } from './changelog-page-routing.module'; diff --git a/apps/client/src/app/pages/about/changelog/changelog-page.scss b/apps/client/src/app/pages/about/changelog/changelog-page.scss index 3fb17de78..3a20b8758 100644 --- a/apps/client/src/app/pages/about/changelog/changelog-page.scss +++ b/apps/client/src/app/pages/about/changelog/changelog-page.scss @@ -2,20 +2,18 @@ color: rgb(var(--dark-primary-text)); display: block; - .mat-card { + .mat-mdc-card { &.changelog { - a { - color: rgba(var(--palette-primary-500), 1); - font-weight: 500; + ::ng-deep { + a { + color: rgba(var(--palette-primary-500), 1); + font-weight: 500; - &:hover { - color: rgba(var(--palette-primary-300), 1); + &:hover { + color: rgba(var(--palette-primary-300), 1); + } } - } - } - &.changelog { - ::ng-deep { markdown { h1, p { diff --git a/apps/client/src/app/pages/accounts/accounts-page.component.ts b/apps/client/src/app/pages/accounts/accounts-page.component.ts index 72b5771e4..6d7f84555 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.component.ts +++ b/apps/client/src/app/pages/accounts/accounts-page.component.ts @@ -1,5 +1,5 @@ import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; -import { MatLegacyDialog as MatDialog } from '@angular/material/legacy-dialog'; +import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Router } from '@angular/router'; import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto'; import { UpdateAccountDto } from '@ghostfolio/api/app/account/update-account.dto'; diff --git a/apps/client/src/app/pages/accounts/accounts-page.html b/apps/client/src/app/pages/accounts/accounts-page.html index 77c487f98..6b23950d5 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.html +++ b/apps/client/src/app/pages/accounts/accounts-page.html @@ -30,7 +30,7 @@ [queryParams]="{ createDialog: true }" [routerLink]="[]" > - +
    diff --git a/apps/client/src/app/pages/accounts/accounts-page.module.ts b/apps/client/src/app/pages/accounts/accounts-page.module.ts index 1cd055bfb..9edb43ba7 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.module.ts +++ b/apps/client/src/app/pages/accounts/accounts-page.module.ts @@ -1,6 +1,6 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button'; +import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { GfAccountDetailDialogModule } from '@ghostfolio/client/components/account-detail-dialog/account-detail-dialog.module'; import { GfAccountsTableModule } from '@ghostfolio/client/components/accounts-table/accounts-table.module'; diff --git a/apps/client/src/app/pages/admin/admin-page.module.ts b/apps/client/src/app/pages/admin/admin-page.module.ts index d33c94d9a..b3cf5d733 100644 --- a/apps/client/src/app/pages/admin/admin-page.module.ts +++ b/apps/client/src/app/pages/admin/admin-page.module.ts @@ -1,15 +1,11 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button'; -import { MatLegacyCardModule as MatCardModule } from '@angular/material/legacy-card'; -import { MatLegacyMenuModule as MatMenuModule } from '@angular/material/legacy-menu'; import { MatLegacyTabsModule as MatTabsModule } from '@angular/material/legacy-tabs'; import { GfAdminJobsModule } from '@ghostfolio/client/components/admin-jobs/admin-jobs.module'; import { GfAdminMarketDataModule } from '@ghostfolio/client/components/admin-market-data/admin-market-data.module'; import { GfAdminOverviewModule } from '@ghostfolio/client/components/admin-overview/admin-overview.module'; import { GfAdminUsersModule } from '@ghostfolio/client/components/admin-users/admin-users.module'; import { CacheService } from '@ghostfolio/client/services/cache.service'; -import { GfValueModule } from '@ghostfolio/ui/value'; import { AdminPageRoutingModule } from './admin-page-routing.module'; import { AdminPageComponent } from './admin-page.component'; @@ -24,10 +20,6 @@ import { AdminPageComponent } from './admin-page.component'; GfAdminMarketDataModule, GfAdminOverviewModule, GfAdminUsersModule, - GfValueModule, - MatButtonModule, - MatCardModule, - MatMenuModule, MatTabsModule ], providers: [CacheService], diff --git a/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.module.ts b/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.module.ts index 48951f6e4..93964e7ab 100644 --- a/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.module.ts +++ b/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.module.ts @@ -1,6 +1,6 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button'; +import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { GfPremiumIndicatorModule } from '@ghostfolio/ui/premium-indicator'; diff --git a/apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.module.ts b/apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.module.ts index 4faf5af89..f383347d5 100644 --- a/apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.module.ts +++ b/apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.module.ts @@ -1,6 +1,6 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button'; +import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { TheImportanceOfTrackingYourPersonalFinancesRoutingModule } from './the-importance-of-tracking-your-personal-finances-page-routing.module'; diff --git a/apps/client/src/app/pages/blog/blog-page.html b/apps/client/src/app/pages/blog/blog-page.html index e2ebfa891..69b5000b9 100644 --- a/apps/client/src/app/pages/blog/blog-page.html +++ b/apps/client/src/app/pages/blog/blog-page.html @@ -2,7 +2,7 @@

    Blog

    - +
    @@ -28,7 +28,7 @@
    - +
    @@ -54,7 +54,11 @@
    - +
    @@ -78,7 +82,7 @@
    - +
    @@ -102,7 +106,7 @@
    - +
    @@ -126,7 +130,7 @@
    - +
    @@ -152,7 +156,7 @@
    - +
    @@ -178,7 +182,7 @@
    - +
    @@ -204,7 +208,7 @@
    - +
    @@ -228,7 +232,7 @@
    - +
    diff --git a/apps/client/src/app/pages/blog/blog-page.module.ts b/apps/client/src/app/pages/blog/blog-page.module.ts index 3f06d6da6..d210c1aad 100644 --- a/apps/client/src/app/pages/blog/blog-page.module.ts +++ b/apps/client/src/app/pages/blog/blog-page.module.ts @@ -1,6 +1,6 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatLegacyCardModule as MatCardModule } from '@angular/material/legacy-card'; +import { MatCardModule } from '@angular/material/card'; import { BlogPageRoutingModule } from './blog-page-routing.module'; import { BlogPageComponent } from './blog-page.component'; diff --git a/apps/client/src/app/pages/faq/faq-page.component.ts b/apps/client/src/app/pages/faq/faq-page.component.ts index c7e2b436d..b93004337 100644 --- a/apps/client/src/app/pages/faq/faq-page.component.ts +++ b/apps/client/src/app/pages/faq/faq-page.component.ts @@ -1,5 +1,7 @@ -import { Component, OnDestroy } from '@angular/core'; -import { Subject } from 'rxjs'; +import { ChangeDetectorRef, Component, OnDestroy } from '@angular/core'; +import { UserService } from '@ghostfolio/client/services/user/user.service'; +import { User } from '@ghostfolio/common/interfaces'; +import { Subject, takeUntil } from 'rxjs'; @Component({ host: { class: 'page' }, @@ -8,9 +10,26 @@ import { Subject } from 'rxjs'; templateUrl: './faq-page.html' }) export class FaqPageComponent implements OnDestroy { + public user: User; + private unsubscribeSubject = new Subject(); - public constructor() {} + public constructor( + private changeDetectorRef: ChangeDetectorRef, + private userService: UserService + ) {} + + public ngOnInit() { + this.userService.stateChanged + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((state) => { + if (state?.user) { + this.user = state.user; + + this.changeDetectorRef.markForCheck(); + } + }); + } public ngOnDestroy() { this.unsubscribeSubject.next(); diff --git a/apps/client/src/app/pages/faq/faq-page.html b/apps/client/src/app/pages/faq/faq-page.html index 7e18aa57e..2ffd78d08 100644 --- a/apps/client/src/app/pages/faq/faq-page.html +++ b/apps/client/src/app/pages/faq/faq-page.html @@ -115,7 +115,7 @@ >. - + I cannot find my broker in the list of platforms. What can I do?
    @@ -68,6 +69,24 @@ >
    +
    -
    +

    How does Ghostfolio work? diff --git a/apps/client/src/app/pages/resources/resources-page.html b/apps/client/src/app/pages/resources/resources-page.html index 32223b6cf..86d97f8af 100644 --- a/apps/client/src/app/pages/resources/resources-page.html +++ b/apps/client/src/app/pages/resources/resources-page.html @@ -1,7 +1,7 @@
    -

    Resources

    +

    Resources

    Guides

    diff --git a/apps/client/src/app/pages/resources/resources-page.module.ts b/apps/client/src/app/pages/resources/resources-page.module.ts index 13d452899..10845a517 100644 --- a/apps/client/src/app/pages/resources/resources-page.module.ts +++ b/apps/client/src/app/pages/resources/resources-page.module.ts @@ -1,13 +1,12 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatLegacyCardModule as MatCardModule } from '@angular/material/legacy-card'; import { ResourcesPageRoutingModule } from './resources-page-routing.module'; import { ResourcesPageComponent } from './resources-page.component'; @NgModule({ declarations: [ResourcesPageComponent], - imports: [CommonModule, MatCardModule, ResourcesPageRoutingModule], + imports: [CommonModule, ResourcesPageRoutingModule], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class ResourcesPageModule {} diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss index 9c4a9bb2e..f9c101de1 100644 --- a/apps/client/src/styles.scss +++ b/apps/client/src/styles.scss @@ -203,7 +203,7 @@ body { .blog { a { - &:not(.mat-flat-button) { + &:not(.mdc-button) { color: rgba(var(--palette-primary-500), 1) !important; font-weight: 500; diff --git a/package.json b/package.json index 0d62b0420..8e6765312 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "@nestjs/schedule": "2.1.0", "@nestjs/serve-static": "3.0.0", "@nrwl/angular": "15.6.3", - "@prisma/client": "4.9.0", + "@prisma/client": "4.10.1", "@simplewebauthn/browser": "5.2.1", "@simplewebauthn/server": "5.2.1", "@stripe/stripe-js": "1.22.0", @@ -119,7 +119,7 @@ "passport": "0.6.0", "passport-google-oauth20": "2.0.0", "passport-jwt": "4.0.0", - "prisma": "4.9.0", + "prisma": "4.10.1", "reflect-metadata": "0.1.13", "rxjs": "7.5.6", "stripe": "8.199.0", diff --git a/yarn.lock b/yarn.lock index 03339ac7d..a2a0845ec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4841,22 +4841,22 @@ dependencies: esquery "^1.0.1" -"@prisma/client@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@prisma/client/-/client-4.9.0.tgz#4a4068f3540732ea5723c008d49ed684d20f9340" - integrity sha512-bz6QARw54sWcbyR1lLnF2QHvRW5R/Jxnbbmwh3u+969vUKXtBkXgSgjDA85nji31ZBlf7+FrHDy5x+5ydGyQDg== +"@prisma/client@4.10.1": + version "4.10.1" + resolved "https://registry.yarnpkg.com/@prisma/client/-/client-4.10.1.tgz#c47fd54661ee74b174cee63e9dc418ecf57a6ccd" + integrity sha512-VonXLJZybdt8e5XZH5vnIGCRNnIh6OMX1FS3H/yzMGLT3STj5TJ/OkMcednrvELgk8PK89Vo3aSh51MWNO0axA== dependencies: - "@prisma/engines-version" "4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5" + "@prisma/engines-version" "4.10.1-2.aead147aa326ccb985dcfed5b065b4fdabd44b19" -"@prisma/engines-version@4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5": - version "4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5.tgz#9d817a5779fc05b107eb02f63d197ad296d60b3c" - integrity sha512-M16aibbxi/FhW7z1sJCX8u+0DriyQYY5AyeTH7plQm9MLnURoiyn3CZBqAyIoQ+Z1pS77usCIibYJWSgleBMBA== +"@prisma/engines-version@4.10.1-2.aead147aa326ccb985dcfed5b065b4fdabd44b19": + version "4.10.1-2.aead147aa326ccb985dcfed5b065b4fdabd44b19" + resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-4.10.1-2.aead147aa326ccb985dcfed5b065b4fdabd44b19.tgz#312359d9d00e39e323136d0270876293d315658e" + integrity sha512-tsjTho7laDhf9EJ9EnDxAPEf7yrigSMDhniXeU4YoWc7azHAs4GPxRi2P9LTFonmHkJLMOLjR77J1oIP8Ife1w== -"@prisma/engines@4.9.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-4.9.0.tgz#05a1411964e047c1bc43f777c7a1c69f86a2a26c" - integrity sha512-t1pt0Gsp+HcgPJrHFc+d/ZSAaKKWar2G/iakrE07yeKPNavDP3iVKPpfXP22OTCHZUWf7OelwKJxQgKAm5hkgw== +"@prisma/engines@4.10.1": + version "4.10.1" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-4.10.1.tgz#c7062747f254e5d5fce98a8cae566c25f9f29fb2" + integrity sha512-B3tcTxjx196nuAu1GOTKO9cGPUgTFHYRdkPkTS4m5ptb2cejyBlH9X7GOfSt3xlI7p4zAJDshJP4JJivCg9ouA== "@samverschueren/stream-to-observable@^0.3.0": version "0.3.1" @@ -18016,12 +18016,12 @@ pretty-hrtime@^1.0.3: resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz" integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== -prisma@4.9.0: - version "4.9.0" - resolved "https://registry.yarnpkg.com/prisma/-/prisma-4.9.0.tgz#295954b2a89cd35a0e6bcf66b2b036dbf80c75ee" - integrity sha512-bS96oZ5oDFXYgoF2l7PJ3Mp1wWWfLOo8B/jAfbA2Pn0Wm5Z/owBHzaMQKS3i1CzVBDWWPVnOohmbJmjvkcHS5w== +prisma@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/prisma/-/prisma-4.10.1.tgz#88084695d7b364ae6bebf93d5006f84439c4e7d1" + integrity sha512-0jDxgg+DruB1kHVNlcspXQB9au62IFfVg9drkhzXudszHNUAQn0lVuu+T8np0uC2z1nKD5S3qPeCyR8u5YFLnA== dependencies: - "@prisma/engines" "4.9.0" + "@prisma/engines" "4.10.1" prismjs@^1.28.0: version "1.28.0"