Handle management/info failures gracefully in ProfileService#789
Merged
Conversation
getProfileInfo() had no error handling, so a failed /management/info request (e.g. backend unreachable) propagated uncaught to every subscriber (navbar, footer, page-ribbon, create-simulation-box) and surfaced as multiple errors in the global Angular ErrorHandler. Mirror the resilience already present in AccountService by catching the error and degrading to default ProfileInfo. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ProfileService.getProfileInfo()fetched/management/infowith no error handling. When that request fails or returns a non-JSON body (e.g. the backend is unreachable, or the SPA is served standalone), the error propagated uncaught to every subscriber — navbar, footer, page-ribbon, create-simulation-box — and each surfaced in Angular's globalErrorHandler. On the anonymous landing page that's 3 active subscribers ⇒ 3 console errors.This mirrors the resilience
AccountService.identity()already has (catchError(() => of(undefined))): on failure, degrade gracefully to a defaultProfileInfoinstead of throwing.Context
This surfaced while smoke-testing the Angular 22 PR (#784) by serving the production bundle without a backend: the 3 console errors were all from this missing
catchError(the/api/account401 path was already handled). It is pre-existing and unrelated to the Angular version — in normal deployments/management/inforeturns JSON, so it never fired. The fix makes the app robust when it doesn't.Testing
pnpm run webapp:prod) ✅pnpm run lint✅ ·pnpm run prettier:check✅🤖 Generated with Claude Code