Skip to content

fix: useSmartPolling stops polling after the first re-render because useBountyStatus passes inline fetchFn/compareFn/onDataChange - #808

Open
Biglamar wants to merge 1 commit into
MergeFi:mainfrom
Biglamar:solver/issue-568-42-a0
Open

Biglamar wants to merge 1 commit into
MergeFi:mainfrom
Biglamar:solver/issue-568-42-a0

Conversation

@Biglamar

Copy link
Copy Markdown

Summary

In src/hooks/useSmartPolling.ts, fetchFn, compareFn and onDataChange are now held in refs that are updated on every render, so fetchData no longer changes identity when callers pass inline functions. I also removed the hasInitialized guard from the main polling effect. The effect now recreates the interval whenever it re-runs, including when enabled goes from false to true. Before this, the first re-render ran the effect cleanup, which cleared the interval, and nothing recreated it. I added a regression test in src/hooks/useSmartPolling.test.tsx that uses inline callbacks and asserts polling continues past several intervals. I could not run any tests in this session.

Changed files

  • src/hooks/useSmartPolling.test.tsx
  • src/hooks/useSmartPolling.ts

Test plan

Run jest src/hooks/useSmartPolling.test.tsx src/hooks/useBountyStatus.test.tsx, plus the ClaimButton and BountyStatus tests. The new test, 'keeps polling across re-renders when callbacks are inline (#568)', asserts fetchFn is called more than twice after three timer advances. The existing enabled-toggle and backoff tests in the same file cover the removal of the hasInitialized guard.

This PR was created as a draft by the issue solver bot. It will remain a
draft until repository CI passes.

Closes #568

@vercel

vercel Bot commented Oct 18, 2026

Copy link
Copy Markdown

@issue-solver-bot is attempting to deploy a commit to the chonilius' projects Team on Vercel.

A member of the Team first needs to authorize it.

@Biglamar
Biglamar marked this pull request as ready for review October 18, 2026 22:12
@Biglamar
Biglamar force-pushed the solver/issue-568-42-a0 branch from b7b931c to 323d7ea Compare October 21, 2026 11:44
@Biglamar
Biglamar force-pushed the solver/issue-568-42-a0 branch from 323d7ea to d5f959f Compare November 8, 2026 03:25
@drips-wave

drips-wave Bot commented Nov 8, 2026

Copy link
Copy Markdown

Warning

Possible malicious code: please review before merging.

An automated security scan flagged files in this pull request that appear to contain malicious code. Code like this can run automatically when a project is opened in an editor or its dependencies are installed, so it could compromise the machine of anyone who checks out this branch.

Automated scans can be wrong, so this may be a false positive. Maintainers: please review the flagged files carefully before merging, on GitHub in your browser rather than by checking out the branch. The malicious part is often hidden far off to the right of an ordinary-looking line, so scroll sideways through each file.

@Biglamar: this pull request adds or changes these files, possibly without your knowledge. Malware like this spreads by adding itself to repositories on machines it has infected, so your machine might be compromised. Please undo these changes in this pull request, and don't open or run other projects on that machine until you've checked it.

Flagged files at commit d5f959f:

Only merge once you're confident these files are safe.

ℹ️ Posted automatically by Drips Wave. Questions? Contact support@drips.network.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

useSmartPolling stops polling after the first re-render because useBountyStatus passes inline fetchFn/compareFn/onDataChange

2 participants