https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=43516

            Bug ID: 43516
           Summary: Harden the frontend HttpClient and add a shared API
                    error formatter
   Initiative type: ---
        Sponsorship ---
            status:
           Product: Koha
           Version: Main
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P5 - low
         Component: Architecture, internals, and plumbing
          Assignee: [email protected]
          Reporter: [email protected]
        QA Contact: [email protected]
            Blocks: 41129
  Target Milestone: ---

This patch hardens the shared frontend HttpClient (both the plain
fetch/http-client.js used by most Vue API clients, and the Vue-composable
variant in vue/fetch/http-client.js) against malformed and unreachable API
responses, and adds a generic, translated API error formatter.

Specifically:
- Guard against malformed JSON in responses (a truncated body, a proxy error
page, a session-expired redirect) instead of letting the parse error surface as
the failure.
- Preserve the HTTP status and Koha error_code on thrown errors so callers can
branch on them.
- Add a per-request config object (config.signal to cancel the underlying fetch
via AbortController, config.suppressDefaultErrorDialog for callers that present
their own error UI).
- Add fetch/api-error.js: a small, translated formatApiError() helper that
turns a thrown API error into a user-facing message (401, 403,
network-unreachable, and generic fallback cases).

This is generic frontend infrastructure with no feature-specific behaviour;
it's split out from bug 41129 (booking workflows) because several later patches
depend on it and it benefits from independent review.

Test plan:
1. Run: yarn cypress run --component --browser electron --spec
't/cypress/component/HttpClient_spec.ts,t/cypress/component/VueHttpClient_spec.ts,t/cypress/component/fetch/api-error_spec.ts'
2. Verify all specs pass.


Referenced Bugs:

https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=41129
[Bug 41129] Migrate place_booking.js to a Vue island.
-- 
You are receiving this mail because:
You are the assignee for the bug.
You are watching all bug changes.
_______________________________________________
Koha-bugs mailing list -- [email protected]
To unsubscribe send an email to [email protected]
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to