diff --git a/.vscode/settings.json b/.vscode/settings.json
index 9bf4d12b5..d12cbc646 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,4 +1,5 @@
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
- "editor.formatOnSave": true
+ "editor.formatOnSave": true,
+ "angular.enable-strict-mode-prompt": false
}
diff --git a/apps/client/src/app/components/header/header.component.html b/apps/client/src/app/components/header/header.component.html
index e192d7fee..c3cd958c1 100644
--- a/apps/client/src/app/components/header/header.component.html
+++ b/apps/client/src/app/components/header/header.component.html
@@ -6,6 +6,7 @@
mat-button
[ngClass]="{ 'w-100': hasTabs }"
[routerLink]="['/']"
+ (click)="onLogoClick()"
>
diff --git a/apps/client/src/app/components/header/header.component.ts b/apps/client/src/app/components/header/header.component.ts
index 412082de8..a9974cfc0 100644
--- a/apps/client/src/app/components/header/header.component.ts
+++ b/apps/client/src/app/components/header/header.component.ts
@@ -13,6 +13,7 @@ import { MatMenuTrigger } from '@angular/material/menu';
import { Router } from '@angular/router';
import { UpdateUserSettingDto } from '@ghostfolio/api/app/user/update-user-setting.dto';
import { LoginWithAccessTokenDialog } from '@ghostfolio/client/components/login-with-access-token-dialog/login-with-access-token-dialog.component';
+import { LayoutService } from '@ghostfolio/client/core/layout.service';
import { DataService } from '@ghostfolio/client/services/data.service';
import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service';
import {
@@ -89,6 +90,7 @@ export class HeaderComponent implements OnChanges {
private dataService: DataService,
private dialog: MatDialog,
private impersonationStorageService: ImpersonationStorageService,
+ private layoutService: LayoutService,
private router: Router,
private settingsStorageService: SettingsStorageService,
private tokenStorageService: TokenStorageService,
@@ -192,6 +194,12 @@ export class HeaderComponent implements OnChanges {
});
}
+ public onLogoClick() {
+ if (this.currentRoute === 'home') {
+ this.layoutService.triggerReload();
+ }
+ }
+
public onMenuClosed() {
this.isMenuOpen = false;
}
diff --git a/apps/client/src/app/components/home-overview/home-overview.component.ts b/apps/client/src/app/components/home-overview/home-overview.component.ts
index 47809ee53..4bec9d404 100644
--- a/apps/client/src/app/components/home-overview/home-overview.component.ts
+++ b/apps/client/src/app/components/home-overview/home-overview.component.ts
@@ -2,6 +2,7 @@ import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';
import { ToggleComponent } from '@ghostfolio/client/components/toggle/toggle.component';
import { DataService } from '@ghostfolio/client/services/data.service';
import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service';
+import { LayoutService } from '@ghostfolio/client/core/layout.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import {
LineChartItem,
@@ -12,7 +13,7 @@ import {
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { DateRange } from '@ghostfolio/common/types';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
+import { Subject, Subscription } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@Component({
@@ -35,6 +36,7 @@ export class HomeOverviewComponent implements OnDestroy, OnInit {
public showDetails = false;
public unit: string;
public user: User;
+ private subscription: Subscription;
private unsubscribeSubject = new Subject();
@@ -42,6 +44,7 @@ export class HomeOverviewComponent implements OnDestroy, OnInit {
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
private deviceService: DeviceDetectorService,
+ private layoutService: LayoutService,
private impersonationStorageService: ImpersonationStorageService,
private userService: UserService
) {
@@ -78,6 +81,10 @@ export class HomeOverviewComponent implements OnDestroy, OnInit {
this.user.settings.viewMode !== 'ZEN';
this.unit = this.showDetails ? this.user.settings.baseCurrency : '%';
+
+ this.subscription = this.layoutService.shouldReload$.subscribe(() => {
+ this.update();
+ });
}
public onChangeDateRange(dateRange: DateRange) {
@@ -101,6 +108,9 @@ export class HomeOverviewComponent implements OnDestroy, OnInit {
public ngOnDestroy() {
this.unsubscribeSubject.next();
this.unsubscribeSubject.complete();
+ if (this.subscription) {
+ this.subscription.unsubscribe();
+ }
}
private update() {
diff --git a/apps/client/src/app/core/layout.service.ts b/apps/client/src/app/core/layout.service.ts
new file mode 100644
index 000000000..6c17bbfa0
--- /dev/null
+++ b/apps/client/src/app/core/layout.service.ts
@@ -0,0 +1,19 @@
+import { Injectable } from '@angular/core';
+import { Subject } from 'rxjs';
+
+@Injectable({
+ providedIn: 'root'
+})
+export class LayoutService {
+ private shouldReloadSubject = new Subject();
+
+ // Observable stream
+ public shouldReload$ = this.shouldReloadSubject.asObservable();
+
+ constructor() {}
+
+ // Method to trigger the reload
+ public triggerReload() {
+ this.shouldReloadSubject.next();
+ }
+}
diff --git a/git-hooks/pre-commit b/git-hooks/pre-commit
old mode 100755
new mode 100644