From 3228abef44f71dfac49b2e641ab4cbc3b06bf790 Mon Sep 17 00:00:00 2001 From: Nino Righi Date: Fri, 28 Nov 2025 12:40:04 +0000 Subject: [PATCH] Merged PR 2061: feature(crm-data-access): Added check in customer resource if customerId has... feature(crm-data-access): Added check in customer resource if customerId has changed to prevent flickering in the view after Filter changes etc. Ref: #5478 --- .../src/lib/resources/customer.resource.ts | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/libs/crm/data-access/src/lib/resources/customer.resource.ts b/libs/crm/data-access/src/lib/resources/customer.resource.ts index 805ea1e79..075b46d22 100644 --- a/libs/crm/data-access/src/lib/resources/customer.resource.ts +++ b/libs/crm/data-access/src/lib/resources/customer.resource.ts @@ -1,4 +1,11 @@ -import { effect, inject, Injectable, resource, signal } from '@angular/core'; +import { + effect, + inject, + Injectable, + resource, + signal, + untracked, +} from '@angular/core'; import { CrmSearchService, CrmTabMetadataService } from '../services'; import { TabService } from '@isa/core/tabs'; import { Customer } from '../schemas'; @@ -7,17 +14,20 @@ import { Customer } from '../schemas'; export class CustomerResource { #customerService = inject(CrmSearchService); - #params = signal<{ customerId: number | undefined; eagerLoading: number }>({ + protected _params = signal<{ + customerId: number | undefined; + eagerLoading: number; + }>({ customerId: undefined, eagerLoading: 3, }); params(params: { customerId?: number; eagerLoading?: number }) { - this.#params.update((p) => ({ ...p, ...params })); + this._params.update((p) => ({ ...p, ...params })); } readonly resource = resource({ - params: () => this.#params(), + params: () => this._params(), loader: async ({ params, abortSignal }): Promise => { if (!params.customerId) { return undefined; @@ -45,12 +55,17 @@ export class SelectedCustomerResource extends CustomerResource { super(); effect(() => { const tabId = this.#tabId(); + let customerId = undefined; - const customerId = tabId - ? this.#customerMetadata.selectedCustomerId(tabId) - : undefined; + if (tabId) { + customerId = this.#customerMetadata.selectedCustomerId(tabId); + } - this.params({ customerId }); + untracked(() => { + if (this._params().customerId !== customerId) { + this.params({ customerId }); + } + }); }); }