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]