From 2c9d1c8a35c02f657bc02e4cbc4da9ebd24d4708 Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Tue, 10 Feb 2026 11:26:31 +0700 Subject: [PATCH 01/10] fix(lib): replace null with undefined in activities table stories --- .../activities-table.component.stories.ts | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/libs/ui/src/lib/activities-table/activities-table.component.stories.ts b/libs/ui/src/lib/activities-table/activities-table.component.stories.ts index e7a2ba819..25463e576 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.stories.ts +++ b/libs/ui/src/lib/activities-table/activities-table.component.stories.ts @@ -59,7 +59,7 @@ const activities: Activity[] = [ SymbolProfile: { assetClass: 'EQUITY', assetSubClass: 'ETF', - comment: null, + comment: undefined, countries: [], createdAt: new Date('2021-06-06T16:12:20.982Z'), currency: 'USD', @@ -74,12 +74,12 @@ const activities: Activity[] = [ isin: 'US9220427424', name: 'Vanguard Total World Stock Index Fund ETF Shares', updatedAt: new Date('2025-10-01T20:09:39.500Z'), - scraperConfiguration: null, + scraperConfiguration: undefined, sectors: [], symbol: 'VT', symbolMapping: {}, url: 'https://www.vanguard.com', - userId: null, + userId: undefined, activitiesCount: 267, dateOfFirstActivity: new Date('2018-05-31T16:00:00.000Z') }, @@ -126,7 +126,7 @@ const activities: Activity[] = [ SymbolProfile: { assetClass: 'EQUITY', assetSubClass: 'ETF', - comment: null, + comment: undefined, countries: [], createdAt: new Date('2021-06-06T16:12:20.982Z'), currency: 'USD', @@ -141,12 +141,12 @@ const activities: Activity[] = [ isin: 'US9220427424', name: 'Vanguard Total World Stock Index Fund ETF Shares', updatedAt: new Date('2025-10-01T20:09:39.500Z'), - scraperConfiguration: null, + scraperConfiguration: undefined, sectors: [], symbol: 'VT', symbolMapping: {}, url: 'https://www.vanguard.com', - userId: null, + userId: undefined, activitiesCount: 267, dateOfFirstActivity: new Date('2018-05-31T16:00:00.000Z') }, @@ -193,7 +193,7 @@ const activities: Activity[] = [ SymbolProfile: { assetClass: 'LIQUIDITY', assetSubClass: 'CRYPTOCURRENCY', - comment: null, + comment: undefined, countries: [], createdAt: new Date('2024-03-12T15:15:21.217Z'), currency: 'USD', @@ -208,12 +208,12 @@ const activities: Activity[] = [ isin: 'CA4639181029', name: 'iShares Bitcoin Trust', updatedAt: new Date('2025-09-29T03:14:07.742Z'), - scraperConfiguration: null, + scraperConfiguration: undefined, sectors: [], symbol: 'IBIT', symbolMapping: {}, url: 'https://www.ishares.com', - userId: null, + userId: undefined, activitiesCount: 6, dateOfFirstActivity: new Date('2024-01-01T08:00:00.000Z') }, @@ -280,7 +280,7 @@ const activities: Activity[] = [ symbol: 'BNDW', symbolMapping: {}, url: 'https://vanguard.com', - userId: null, + userId: undefined, activitiesCount: 38, dateOfFirstActivity: new Date('2022-04-13T20:05:48.742Z') }, @@ -327,7 +327,7 @@ const activities: Activity[] = [ SymbolProfile: { assetClass: 'EQUITY', assetSubClass: 'ETF', - comment: null, + comment: undefined, countries: [], createdAt: new Date('2021-06-06T16:12:20.982Z'), currency: 'USD', @@ -342,12 +342,12 @@ const activities: Activity[] = [ isin: 'US9220427424', name: 'Vanguard Total World Stock Index Fund ETF Shares', updatedAt: new Date('2025-10-01T20:09:39.500Z'), - scraperConfiguration: null, + scraperConfiguration: undefined, sectors: [], symbol: 'VT', symbolMapping: {}, url: 'https://www.vanguard.com', - userId: null, + userId: undefined, activitiesCount: 267, dateOfFirstActivity: new Date('2018-05-31T16:00:00.000Z') }, From a2dea0cc1e8eec847fab3fae784b818b1ead7fae Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Tue, 10 Feb 2026 11:30:47 +0700 Subject: [PATCH 02/10] feat(lib): implement inject functions in accounts table --- .../src/lib/accounts-table/accounts-table.component.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libs/ui/src/lib/accounts-table/accounts-table.component.ts b/libs/ui/src/lib/accounts-table/accounts-table.component.ts index 21300fdcc..12a55cc7e 100644 --- a/libs/ui/src/lib/accounts-table/accounts-table.component.ts +++ b/libs/ui/src/lib/accounts-table/accounts-table.component.ts @@ -81,12 +81,11 @@ export class GfAccountsTableComponent implements OnChanges, OnDestroy { public isLoading = true; public routeQueryParams: Subscription; - private unsubscribeSubject = new Subject(); + private readonly notificationService = inject(NotificationService); + private readonly router = inject(Router); + private readonly unsubscribeSubject = new Subject(); - public constructor( - private notificationService: NotificationService, - private router: Router - ) { + public constructor() { addIcons({ arrowRedoOutline, createOutline, From f210f842cd58a999e5785dcfeb9d0a956816799f Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Tue, 10 Feb 2026 11:31:15 +0700 Subject: [PATCH 03/10] feat(lib): change to input functions --- .../accounts-table.component.html | 2 +- .../accounts-table.component.ts | 29 ++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/libs/ui/src/lib/accounts-table/accounts-table.component.html b/libs/ui/src/lib/accounts-table/accounts-table.component.html index 68ae78474..56ac5c379 100644 --- a/libs/ui/src/lib/accounts-table/accounts-table.component.html +++ b/libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -1,4 +1,4 @@ -@if (showActions) { +@if (showActions()) {
-@if (isLoading) { +@if (isLoading()) { (); - public isLoading = true; public routeQueryParams: Subscription; public readonly accounts = input.required(); @@ -118,6 +117,8 @@ export class GfAccountsTableComponent implements OnChanges, OnDestroy { return columns; }); + protected readonly isLoading = computed(() => !this.accounts()); + private readonly notificationService = inject(NotificationService); private readonly router = inject(Router); private readonly unsubscribeSubject = new Subject(); @@ -135,16 +136,10 @@ export class GfAccountsTableComponent implements OnChanges, OnDestroy { } public ngOnChanges() { - this.isLoading = true; - this.dataSource = new MatTableDataSource(this.accounts()); this.dataSource.sortingDataAccessor = getLowercase; this.dataSource.sort = this.sort; - - if (this.accounts()) { - this.isLoading = false; - } } public onDeleteAccount(aId: string) { From 3e0064625ff2a9882c48ddf57e1df314a6c32f5b Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Tue, 10 Feb 2026 11:42:52 +0700 Subject: [PATCH 07/10] fix(lib): remove unused routeQueryParams variable --- libs/ui/src/lib/accounts-table/accounts-table.component.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libs/ui/src/lib/accounts-table/accounts-table.component.ts b/libs/ui/src/lib/accounts-table/accounts-table.component.ts index dae21e78c..9e8ad3bb2 100644 --- a/libs/ui/src/lib/accounts-table/accounts-table.component.ts +++ b/libs/ui/src/lib/accounts-table/accounts-table.component.ts @@ -36,7 +36,7 @@ import { walletOutline } from 'ionicons/icons'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; -import { Subject, Subscription } from 'rxjs'; +import { Subject } from 'rxjs'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, @@ -73,7 +73,6 @@ export class GfAccountsTableComponent implements OnChanges, OnDestroy { @ViewChild(MatSort) sort: MatSort; public dataSource = new MatTableDataSource(); - public routeQueryParams: Subscription; public readonly accounts = input.required(); public readonly showActions = input(); From bc57e6f1cc36effe6346d22b1c0603f52f794bc7 Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Tue, 10 Feb 2026 11:47:05 +0700 Subject: [PATCH 08/10] feat(lib): change sort to use viewChild function --- .../src/lib/accounts-table/accounts-table.component.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libs/ui/src/lib/accounts-table/accounts-table.component.ts b/libs/ui/src/lib/accounts-table/accounts-table.component.ts index 9e8ad3bb2..0abf08999 100644 --- a/libs/ui/src/lib/accounts-table/accounts-table.component.ts +++ b/libs/ui/src/lib/accounts-table/accounts-table.component.ts @@ -13,10 +13,10 @@ import { OnChanges, OnDestroy, Output, - ViewChild, computed, inject, - input + input, + viewChild } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatMenuModule } from '@angular/material/menu'; @@ -70,8 +70,6 @@ export class GfAccountsTableComponent implements OnChanges, OnDestroy { @Output() accountToUpdate = new EventEmitter(); @Output() transferBalance = new EventEmitter(); - @ViewChild(MatSort) sort: MatSort; - public dataSource = new MatTableDataSource(); public readonly accounts = input.required(); @@ -81,6 +79,7 @@ export class GfAccountsTableComponent implements OnChanges, OnDestroy { public readonly showBalance = input(true); public readonly showValue = input(true); public readonly showValueInBaseCurrency = input(false); + public readonly sort = viewChild.required(MatSort); protected readonly displayedColumns = computed(() => { const columns = ['status', 'account', 'platform']; @@ -138,7 +137,7 @@ export class GfAccountsTableComponent implements OnChanges, OnDestroy { this.dataSource = new MatTableDataSource(this.accounts()); this.dataSource.sortingDataAccessor = getLowercase; - this.dataSource.sort = this.sort; + this.dataSource.sort = this.sort(); } public onDeleteAccount(aId: string) { From a39d0e35cbf84a0657053f020a1144550a6cc228 Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Tue, 10 Feb 2026 11:48:57 +0700 Subject: [PATCH 09/10] feat(lib): change dataSource to a computed field --- .../accounts-table/accounts-table.component.html | 4 ++-- .../lib/accounts-table/accounts-table.component.ts | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/libs/ui/src/lib/accounts-table/accounts-table.component.html b/libs/ui/src/lib/accounts-table/accounts-table.component.html index 70e8c41bf..63a7a89b6 100644 --- a/libs/ui/src/lib/accounts-table/accounts-table.component.html +++ b/libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -3,7 +3,7 @@