Repository navigation
feat: implement batch payout limit, usernames table, username search,… - #1098
Merged
ONEONUORA merged 1 commit intoSep 27, 2026
Merged
Conversation
… and payment detail modal Closes Fracverse#991, Fracverse#1002, Fracverse#1003, Fracverse#1005 ## Fracverse#991 — Contract: Enforce batch payout max recipient count limit - Updated the comment at the MAX_BATCH_SIZE guard in `batch_payout` to explicitly reference issue Fracverse#991. - The constant MAX_BATCH_SIZE = 100 (defined at the top of lib.rs) and the guard `if batch_size > MAX_BATCH_SIZE { return Err(Error::BatchTooLarge) }` enforce that the `payouts` recipient vector never exceeds 100 elements per call, preventing CPU / gas exhaustion from unbounded iteration in Soroban. Returns the typed Error::BatchTooLarge so callers receive an inspectable error rather than an opaque panic. File: contracts/contracts/social_payment/src/lib.rs ## Fracverse#1002 — Dashboard: Usernames table tracking registry events and claims - The `UsernamesTable` component in the Contracts admin page renders a full data table of all registered usernames, their matched Stellar public keys, and registration dates, fetched live from `/api/registry/claims`. - Columns are sortable (username / registered date) via clickable headers. - The active registration count footer now carries a `data-testid` attribute for easier automated querying. File: dashboard/app/dashboard/contracts/page.tsx ## Fracverse#1003 — Dashboard: Username search bar with autocomplete in admin console - Added a new `UsernameSearchBar` component directly inside `dashboard/app/dashboard/page.tsx` (Social Overview page). - Debounces calls to `/api/users/search` (300 ms) and renders an ARIA- compliant listbox dropdown showing matching username, public key, and registration date for each result. - Selecting a result redirects the admin to `/dashboard/transactions?user=<username>`, which pairs with Fracverse#1005 below. File: dashboard/app/dashboard/page.tsx ## Fracverse#1005 — Dashboard: Payment detail modal for a specific username - The Transactions page now reads the `?user=` query param (set by the SearchBar autocomplete on username selection) and auto-opens the existing `PaymentDetailDialog` for that username on page load. - Added `useRouter` / `usePathname` imports to clean the `?user=` param from the URL when the dialog is dismissed, preventing it from re-opening on subsequent renders. - The dialog itself already lists every historical payment for the user with sender, receiver, amount, and date columns (backed by `/api/users/:username/payments`). File: dashboard/app/dashboard/transactions/page.tsx
|
@Pvsaint 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! 🚀 |
ONEONUORA
approved these changes
Sep 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
… and payment detail modal
Closes #991, Closes #1002, Closes #1003, Closes #1005
#991 — Contract: Enforce batch payout max recipient count limit
batch_payoutto explicitly reference issue contract: CONTRACT: IMPLEMENT BATCH PAYOUT MAX RECIPIENT COUNT LIMIT ENFORCEMENT #991.if batch_size > MAX_BATCH_SIZE { return Err(Error::BatchTooLarge) }enforce that thepayoutsrecipient vector never exceeds 100 elements per call, preventing CPU / gas exhaustion from unbounded iteration in Soroban. Returns the typed Error::BatchTooLarge so callers receive an inspectable error rather than an opaque panic. File: contracts/contracts/social_payment/src/lib.rs#1002 — Dashboard: Usernames table tracking registry events and claims
UsernamesTablecomponent in the Contracts admin page renders a full data table of all registered usernames, their matched Stellar public keys, and registration dates, fetched live from/api/registry/claims.data-testidattribute for easier automated querying. File: dashboard/app/dashboard/contracts/page.tsx#1003 — Dashboard: Username search bar with autocomplete in admin console
UsernameSearchBarcomponent directly insidedashboard/app/dashboard/page.tsx(Social Overview page)./api/users/search(300 ms) and renders an ARIA- compliant listbox dropdown showing matching username, public key, and registration date for each result./dashboard/transactions?user=<username>, which pairs with frontend: [Dashboard] Create detail modal showing historical payments for a specific username #1005 below. File: dashboard/app/dashboard/page.tsx#1005 — Dashboard: Payment detail modal for a specific username
?user=query param (set by the SearchBar autocomplete on username selection) and auto-opens the existingPaymentDetailDialogfor that username on page load.useRouter/usePathnameimports to clean the?user=param from the URL when the dialog is dismissed, preventing it from re-opening on subsequent renders./api/users/:username/payments). File: dashboard/app/dashboard/transactions/page.tsx