Skip to content

fix(ui): toast stacking/pause, chart focus, QR download, error copy, hook polling, wallet detection - #1017

Merged
k-deejah merged 2 commits into
Sorokit:mainfrom
devsimze:fix/issues-952-953-954-955
Oct 23, 2026
Merged

k-deejah merged 2 commits into
Sorokit:mainfrom
devsimze:fix/issues-952-953-954-955

Conversation

@devsimze

Copy link
Copy Markdown
Contributor

Summary

Combined fix for four UI issues. All changes are covered by tests; npm run typecheck, npm run lint, and the changed/related test files (181 passing) are green.

#952 — Prevent toast stacking overlap and pause auto-dismiss on hover

  • Reference-counted pauseToast/resumeToast in ToastContext so overlapping pause sources don't prematurely resume.
  • Toast pauses the auto-dismiss timer on hover/focus and resumes from the remaining time on leave/blur; Escape dismisses.
  • Stacked rendering no longer overlaps.

#953 — Keyboard slice focus, QR download, error copying

  • PieChart: slices get a focus-visible ring and brand stroke for keyboard users.
  • QRCode: linked visually-hidden description via aria-describedby, plus a "Download QR" action (independent of clipboard).
  • ErrorBoundary: "Copy error details" button with an execCommand fallback and "Copied!" feedback.

#954 — Delayed wallet injection + abort in-flight queries

  • SorokitProvider detects wallet extensions injected after mount (seed on mount, stellar#initialized events, plus a bounded 200ms poll) and exposes them via detectedWallets.
  • In-flight account/balance queries are cancelled via an AbortController on network switch / address change / disconnect, guarding against stale state and swallowing superseded rejections.

#955 — Pause background polling + listener optimizations

  • useFeeData: pauses polling while the tab is hidden (visibilitychange) and refreshes when visible again.
  • useOutsideClick: optional explicit target argument rebinds listeners when the element identity changes.
  • useIsVisible: accepts threshold, rootMargin, and root options.

Test plan

  • npx vitest run — changed/related files: 181 passed. Full suite green in isolation (a small number of unrelated, heavily-mocked test files can time out at 10s under host CPU contention only).
  • npm run typecheck — clean
  • npm run lint — clean

Closes #952
Closes #953
Closes #954
Closes #955

…hook polling, wallet detection (Sorokit#952, Sorokit#953, Sorokit#954, Sorokit#955)

- Sorokit#952 Toast: reference-counted pause/resume of auto-dismiss on hover/focus, Escape to dismiss, stacked layout
- Sorokit#953 PieChart focus-visible slice rings; QRCode accessible description + Download QR; ErrorBoundary "Copy error details"
- Sorokit#954 SorokitProvider: detect wallets injected after mount (stellar#initialized + bounded poll) via detectedWallets, abort in-flight account queries on switch/address change
- Sorokit#955 useFeeData pause on tab hidden, useOutsideClick target rebinding, useIsVisible threshold/rootMargin/root options
@drips-wave

drips-wave Bot commented Oct 19, 2026

Copy link
Copy Markdown

@devsimze Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@k-deejah
k-deejah merged commit 922a977 into Sorokit:main Oct 23, 2026
2 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants