Skip to content

Harden Share popover, wire up address-book edit/delete and archived-stream cleanup (#685, #687-#689) - #703

Open
Johnero542 wants to merge 1 commit into
FlowwStar:mainfrom
Johnero542:share-popover-address-book-archived-cleanup-685-687-688-689
Open

Harden Share popover, wire up address-book edit/delete and archived-stream cleanup (#685, #687-#689)#703
Johnero542 wants to merge 1 commit into
FlowwStar:mainfrom
Johnero542:share-popover-address-book-archived-cleanup-685-687-688-689

Conversation

@Johnero542

Copy link
Copy Markdown

Pre-existing breakage fixed along the way (all directly blocked this batch):

  • contracts/streaming/src/lib.rs: get_archived_sent_streams/get_archived_received_streams had dead, syntactically-invalid leftover code after an incomplete refactor to a shared paginate() helper (a bare expression followed by another with no ; — doesn't compile). Removed the dead code.
  • hooks/use-streams.ts: useStreams() had two competing implementations merged together — duplicate pollIntervalRef declarations (hard SyntaxError), duplicate early-return blocks, two conflicting return statements. Reconciled into one implementation that keeps both real features (offline-cache fallback with stale/lastUpdated, and the tab-refocus isRefreshingAfterHidden indicator).
  • app/app/streams/page.tsx: same shape of corruption — duplicate imports, duplicate state/JSX blocks, and malformed JSX with content after the root element's closing tag. Reconstructed into one coherent page (kept the more complete feature set: virtualized list, timeline view, hidden-streams toggle, bulk actions) and added the Archived tab to it.

Closes #685
Closes #687
Closes #688
Closes #689

…tream cleanup

- Replace the custom Share popover on the stream detail page with the
  app's Base-UI-backed DropdownMenu, giving it click-outside, Escape,
  aria-expanded/aria-haspopup, and focus return to the trigger for
  free (FlowwStar#685).
- Wire up deleteAddressBookEntry()/updateAddressBookEntry() in the
  create-stream form: "Recent recipients" pills now have rename and
  remove controls, with a rename dialog (FlowwStar#687).
- Add lib/contract.ts wrappers for the contract's
  get_archived_sent_streams/get_archived_received_streams, a new
  useArchivedStreams() hook, and an "Archived" tab on the streams page
  (FlowwStar#688).
- Add lib/contract.ts's cleanupStream() wrapper, wire it into
  useContract(), and add a "Remove from history" action + confirmation
  dialog on the stream detail page and on each archived-stream row
  (FlowwStar#689).

Along the way, fixed pre-existing breakage blocking this work:
- contracts/streaming/src/lib.rs: get_archived_sent_streams/
  get_archived_received_streams had dead, syntactically-invalid
  leftover pagination code after an incomplete refactor to a shared
  paginate() helper — removed the dead code so the contract compiles.
- hooks/use-streams.ts: useStreams() had two competing implementations
  merged together (duplicate pollIntervalRef declarations, duplicate
  early-return blocks, two conflicting return statements) — reconciled
  into one implementation keeping both real features (offline-cache
  fallback and the tab-refocus "Refreshing…" indicator).
- app/app/streams/page.tsx: similarly had duplicate imports, duplicate
  state/JSX blocks, and malformed JSX with content after the root
  element's closing tag — reconstructed into one coherent page and
  added the Archived tab to it.

Closes FlowwStar#685
Closes FlowwStar#687
Closes FlowwStar#688
Closes FlowwStar#689
@drips-wave

drips-wave Bot commented Aug 29, 2026

Copy link
Copy Markdown

@Johnero542 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

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