Aman-Mittal opened a new issue, #166:
URL: https://github.com/apache/fineract-backoffice-ui/issues/166

   Fixes three user-reported defects, plus the systemic cause behind one of 
them.
   
     1. Pagination was unusable on every list page
   
     DataTableComponent.effectivePageIndex read its raw pageIndex @Input in 
server-side mode, but the list components fetch by offset and never bind it 
back — so it stayed
     0 permanently. Three symptoms fell out of that one fact: the range label 
was always 1 - 10, previous was always disabled, and since goTo() computes from 
the current
     index, next resolved to page 1 every time. Page 2 was reachable, nothing 
beyond it, no way back.
   
     Reproduced against a local Fineract with 54 clients:
   
     ┌────────────┬──────────────┬─────────────────┬─────────────┐
     │   action   │  first row   │   range label   │    prev     │
     ├────────────┼──────────────┼─────────────────┼─────────────┤
     │ page 1     │ 000000053    │ 1 - 10 of 54    │ disabled    │
     ├────────────┼──────────────┼─────────────────┼─────────────┤
     │ next       │ 000000044 ✅ │ 1 - 10 of 54 ❌ │ disabled ❌ │
     ├────────────┼──────────────┼─────────────────┼─────────────┤
     │ next again │ 000000044 ❌ │ 1 - 10 of 54    │ disabled    │
     └────────────┴──────────────┴─────────────────┴─────────────┘
   
     Fix: track page state in the component in both modes. ngOnChanges still 
syncs from the @Input, so a parent that does drive pageIndex keeps control. One 
change fixes
     all 9 list pages.
   
     2. Filters left the paginator disagreeing with the rows
   
     Filters are projected content, so the table can't observe them — changing 
one refetched from offset 0 while the label still read 51 - 54 of 54. The list 
components
     now expose a pageIndex signal and bind it.
   
     3. Profile page hung on a spinner
   
     Two faults compounded: GET /userdetails 404s on the current Fineract, and 
isLoading was a plain field written from the subscribe callback, which never 
marks the view
     dirty — so the error handler ran but the spinner kept going. Now reads GET 
/users/{id}, with signals and a visible error state.
   
     4. The same defect in 23 other components
   
     Not a one-off — the same shape appears in 23 more components, each able to 
hang identically. All converted to signals.
   
     Also included
   
     Compiler warnings cleared (chasing NG8113 turned up a second 
ConfirmDialogComponent declared inline in holidays-list.component.ts); 
theme.service.spec fixed — it was
     failing before this branch and would fail for anyone on a dark-mode 
machine, because the OS-preference path was never stubbed; codeql-action → 
v4.37.1 and
     eslint-plugin-sonarjs → 4.2.0 with its 119 new findings resolved.
   
     Deliberately not included: @ngx-translate v18
   
     Dependabot #131 bumps only http-loader, but 18.x needs core >= 18, and v18 
removes TranslateModule (~400 files). I tried it: provideTranslateService 
resolves the
     loader eagerly, so HttpClient is built during bootstrap → errorInterceptor 
→ NotificationService → TranslateService → NG0200 circular dependency, and no 
translations 
     load at all. Build and unit tests still pass, because specs set 
translations directly — it only shows at runtime. Needs its own change.
   
     Testing
   
     Unit: 647 passing (from 635 with 3 failures). The pagination tests are 
genuine guards — I verified they fail on the reverted code and pass on the fix. 
New
     eslint-plugin-sonarjs → 4.2.0 with its 119 new findings resolved.
   
     Deliberately not included: @ngx-translate v18
   
     Dependabot #131 bumps only http-loader, but 18.x needs core >= 18, and v18 
removes TranslateModule (~400 files). I tried it: provideTranslateService 
resolves the
     loader eagerly, so HttpClient is built during bootstrap → errorInterceptor 
→ NotificationService → TranslateService → NG0200 circular dependency, and no 
translations
     load at all. Build and unit tests still pass, because specs set 
translations directly — it only shows at runtime. Needs its own change.
   
     Testing
   
     Unit: 647 passing (from 635 with 3 failures). The pagination tests are 
genuine guards — I verified they fail on the reverted code and pass on the fix. 
New
     UserProfileComponent spec (it had none) and e2e/list-pagination.spec.ts (6 
mock-based tests, no backend needed). Full e2e: 192 passed, 7 skipped.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to