Skip to content

[tech-debt 3/5 medium risk] Fix withdrawal poller, mutation rollbacks, backdrop upload helper - #14776

Merged
dylanjeffers merged 1 commit into
mainfrom
fix/tech-debt-3-app-behavior
Nov 12, 2026
Merged

dylanjeffers merged 1 commit into
mainfrom
fix/tech-debt-3-app-behavior

Conversation

@dylanjeffers

Copy link
Copy Markdown
Contributor

Third of five PRs that re-ship #14665 on current main, ordered from lowest to highest risk. Branched off main, independent of the others.

What's in it

App-level fixes that change behavior in specific flows.

  • web WithdrawalsTab: after a withdrawal, the poller that waits for the new transaction listed reset (a new function every render) and transactions as effect deps. Every render restarted it, including its 60s timeout, so if the transaction never appeared it called resetQueries every second for as long as the page was open. It now reads both through refs, restarts only when the awaited transaction changes, and stops after 60s.
  • common useMuteUser: the error rollback reset ['trackCommentList', trackId, currentSort], but the real key is [..., { sortMethod }], so muted comments stayed hidden after a failed mute. It now uses getTrackCommentListQueryKey and getTrackCommentCountQueryKey.
  • common useMarkNotificationsAsViewed: restores the previous unread count if the request fails, instead of leaving the badge at 0.
  • common uploadBackdropImage: the fan club banner, coin launch banner and contest cover uploads each had a copy of the same upload + largest-variant + node URL code. They now share one helper (with tests). It reads the node from sdk.services.storageNodeSelector, which is the same instance the old code reached through (sdk.services.storage as any).storageNodeSelector.
  • mobile useEnterContest: if fetching the original track's artwork failed, tapping "submit a remix" did nothing. It now opens Upload without the artwork pre-filled.

Why this tier

These change what happens in a real flow (polling, error rollback, an upload path, a navigation), but each is confined to one hook or screen and the sdk is untouched.

Verified

  • tsc: common, mobile and web show the same errors as origin/main in this checkout, all in untouched files.
  • eslint on changed files: clean.
  • common vitest: new uploadBackdropImage tests pass. The pre-existing store/upload/selectors.test.ts failure is unchanged.
  • mobile jest: all suites pass.

Not verified

No device or browser testing. Worth a manual check on RC: a USDC withdrawal on the Pay & Earn page (spinner should stop once the row appears or after 60s), a fan club banner change and a contest cover upload.

🤖 Generated with Claude Code

Behavior fixes from #14665:
- web WithdrawalsTab: the poller restarted every render, so its 60s
  timeout never fired and it could refetch every second forever
- common useMuteUser: reset the real comment list key on error
- common useMarkNotificationsAsViewed: restore the unread count on error
- common uploadBackdropImage: one helper for fan club banners, coin
  launch banners and contest covers
- mobile useEnterContest: open Upload without artwork if the prefetch fails

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Nov 12, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 1fbaf8a

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@dylanjeffers
dylanjeffers merged commit fc36e58 into main Nov 12, 2026
27 checks passed
@dylanjeffers
dylanjeffers deleted the fix/tech-debt-3-app-behavior branch November 12, 2026 18:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant