Skip to content

feat: Dashboard controls and wallet monitoring#357

Merged
Kingsman-99 merged 5 commits into
Stellar-split:mainfrom
janipauwels-sys:features/dashboard-controls
Jun 28, 2026
Merged

feat: Dashboard controls and wallet monitoring#357
Kingsman-99 merged 5 commits into
Stellar-split:mainfrom
janipauwels-sys:features/dashboard-controls

Conversation

@janipauwels-sys

@janipauwels-sys janipauwels-sys commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR implements 4 interconnected features for the dashboard and wallet handling with full test coverage.

Changes

#310 - Invoice Filter and Sort Controls

  • Added comprehensive filtering by status (All, Active, Funded, Expired)
  • Implemented role toggle (Created/Received)
  • Added date range picker support
  • Sort options: Newest, Oldest, Amount (high→low), Deadline (soonest)
  • URL search params for shareable filtered views
  • 10 test cases covering all filtering and sorting scenarios

#315 - Wallet Disconnect & Account Switch Handling

  • Implemented 10-second polling for wallet connection state
  • Gracefully handles account switches with notifications
  • Subscription-based callback system for state changes
  • 4 test cases covering all wallet state transitions

#316 - Breadcrumb Navigation

  • Accessible breadcrumb component with proper ARIA labels
  • Mobile-optimized: shows last 2 items with … prefix
  • Current page item is non-clickable
  • 4 test cases covering rendering and accessibility

#318 - Invoice Search Page

  • Full-text search across invoice title, ID, and addresses
  • Recent searches stored in localStorage (max 10)
  • Deep-linkable with URL search params
  • 11 test cases covering search functionality and history

Testing

All features include comprehensive test coverage:

  • 29 total test cases
  • All tests passing
  • Includes unit tests for utilities and component tests

Technical Details

  • Implemented using Vitest + React Testing Library
  • Follows existing project patterns and conventions
  • Zero dependencies added (testing only)
  • Minimal, focused implementations per requirements

Closes #310
Closes #315
Closes #316
Closes #318

- Add filterAndSortInvoices utility for filtering by status, role, date range
- Add sortInvoices for newest, oldest, amount (high→low), deadline (soonest)
- Add URL search params serialization/deserialization
- Implement vitest testing framework with 10 comprehensive test cases
…tellar-split#315)

- Add walletMonitor with polling every 10 seconds for connection state changes
- Detect account switches and disconnects gracefully
- Add subscription callbacks for wallet state changes
- Implement comprehensive test suite with 4 test cases covering all scenarios
- Add Breadcrumb component with accessible ol/li structure
- Show last 2 items on mobile with … prefix for overflow
- Make last item non-clickable (current page)
- Implement test suite with 4 test cases covering all functionality
…ellar-split#318)

- Add searchInvoices utility for debounced search across title, ID, addresses
- Implement search history with localStorage (max 10 recent searches)
- Add search utility functions for deep-linkable URLs
- Implement comprehensive test suite with 11 test cases
@vercel

vercel Bot commented Jun 28, 2026

Copy link
Copy Markdown

@janipauwels-sys is attempting to deploy a commit to the kingsman-99's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Jun 28, 2026

Copy link
Copy Markdown

@janipauwels-sys 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

@Kingsman-99 Kingsman-99 merged commit 59da2ab into Stellar-split:main Jun 28, 2026
1 of 3 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

2 participants