fix: prevent silent goal erasure when loadGoals fails (Issue #2)#2287
Open
just-tanvi wants to merge 1 commit into
Open
fix: prevent silent goal erasure when loadGoals fails (Issue #2)#2287just-tanvi wants to merge 1 commit into
just-tanvi wants to merge 1 commit into
Conversation
|
@just-tanvi is attempting to deploy a commit to the PRIYANSHU DOSHI's projects Team on Vercel. A member of the Team first needs to authorize it. |
GSSoC Label Checklist 🏷️@Priyanshu-byte-coder — please apply the appropriate labels before merging: Difficulty (pick one):
Quality (optional):
Validation (required to score):
|
Author
|
@Priyanshu-byte-coder I will try to fix the 2 failing checks in the pr but it might take me some time, Thankyou for understanding ! |
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.
Description
This PR fixes a critical UX bug where the Goals widget would silently clear all visible goals and revert to the empty state if the
/api/goalsendpoint returned a non-OK response (e.g.401 Unauthorized,500 Internal Server Error).Previously,
loadGoalscalled.json()without verifyingresponse.ok. Since error responses return an error payload (without agoalsarray),data.goalswould beundefined. The widget defaulted this to an empty array and calledsetGoals([]), effectively wiping the user's view without giving them any feedback that a network/server issue had occurred.Changes Made
!response.okguard inloadGoals(insidesrc/components/GoalTracker.tsx) that immediately throws an error containing the HTTP status code..catch(() => {})blocks at the three affected call sites to explicitly catch these network errors and callsetSyncError(...)with an appropriate, user-facing error message.Testing
GoalTrackercomponent (npx vitest run test/GoalTracker.test.ts) pass successfully.loadGoalscall now preserves the current goals in the UI and correctly bubbles the error up to the UI banner.closes #2285