Skip to content

feat: implement four open source contributions#570

Merged
ritik4ever merged 1 commit into
ritik4ever:mainfrom
dsdhananjay22:fix/four-issues
Jun 2, 2026
Merged

feat: implement four open source contributions#570
ritik4ever merged 1 commit into
ritik4ever:mainfrom
dsdhananjay22:fix/four-issues

Conversation

@dsdhananjay22

@dsdhananjay22 dsdhananjay22 commented Jun 2, 2026

Copy link
Copy Markdown

closes #415
closes #408
closes #401
closes #400

Summary by CodeRabbit

  • New Features

    • Added infinite scroll pagination for stream lists
    • Stream filters and pagination state now persisted in URL for shareable views
  • Bug Fixes

    • Form submit button now consistently disabled based on validation state
  • Chores

    • Added automated Docker image build workflow for CI/CD pipeline

- Add Docker publish workflow for multi-platform image builds on push to main
- Wire useFormValidation for all CreateStreamForm fields with always-disabled submit
- Implement IntersectionObserver-based infinite scroll in StreamsTable
- Connect useUrlFilters to App.tsx and sync sort/page params to URL
@vercel

vercel Bot commented Jun 2, 2026

Copy link
Copy Markdown

Someone is attempting to deploy a commit to the ritik4ever's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Jun 2, 2026

Copy link
Copy Markdown

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

@coderabbitai

coderabbitai Bot commented Jun 2, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

Walkthrough

This PR implements infinite-scroll pagination with URL-persisted filters across the frontend, improves form validation UX, and adds Docker image publishing. The API now returns paginated results with metadata; App coordinates initial and incremental page loads; StreamsTable renders an intersection-observed sentinel to trigger next-page fetches; and filters/sort/page parameters sync to the browser URL for shareable links.

Changes

Infinite Scroll and URL Persistence

Layer / File(s) Summary
API pagination contract
frontend/src/services/api.ts
ListStreamsFilters expands to include sort, page, limit; new PaginatedResult<T> type returned by listStreams with data, total, page, limit fields.
Filter state and URL synchronization
frontend/src/hooks/useStreamFilter.ts, frontend/src/hooks/useUrlFilters.ts, frontend/src/hooks/useUrlFilters.test.ts
StreamFilters gains sort and page fields; URL parsing validates page >= 1 and reads sort; URL serialization includes page only when > 1; tests verify reading/syncing sort and page params.
App pagination loading and state
frontend/src/App.tsx, frontend/src/components/SenderDashboard.tsx
App imports useUrlFilters, initializes hasMore/loadingMore state, refreshStreams loads first page with limit: 20, loadMore fetches subsequent pages and appends results, unfiltered count uses limit: 1 request; SenderDashboard adapts to response .data field.
StreamsTable infinite scroll UI and behavior
frontend/src/components/StreamsTable.tsx, frontend/src/components/StreamsTable.test.tsx
StreamsTableProps adds optional onLoadMore, hasMore, loadingMore; component uses IntersectionObserver on sentinel element to trigger onLoadMore() when intersecting; renders loading indicator and end-of-results message; tests mock observer and verify callback gating.
CreateStreamForm validation and submit button
frontend/src/components/CreateStreamForm.tsx, frontend/src/components/CreateStreamForm.test.tsx
Submit button disables immediately when form is invalid (not waiting for submit attempt); amount input always shows hint element with aria-describedby switching between error and hint references; test assertions updated to expect immediate disable without prior submit.

Docker Publish Workflow

Layer / File(s) Summary
Docker publish workflow
.github/workflows/docker-publish.yml
New GitHub Actions workflow on main push builds and pushes backend/frontend images to ghcr.io for both linux/amd64 and linux/arm64; uses Buildx, metadata-action for tags (latest and short SHA), and GitHub-hosted cache.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • ritik4ever/stellar-stream#277: Both PRs modify useUrlFilters to persist additional query parameters; the prior PR establishes the hook, this PR extends it with sort and page parameter handling.
  • ritik4ever/stellar-stream#274: Both PRs expand StreamFilters in useStreamFilter.ts and synchronize new fields to the URL; the prior PR adds q field, this PR adds sort and page.
  • ritik4ever/stellar-stream#557: Both PRs modify StreamsTable.tsx pagination/scroll behavior; the prior PR virtualizes rows, this PR adds IntersectionObserver-based infinite scroll.

Poem

🐰 Infinite scrolls and filters dance,
As rabbits craft their test romance,
URL breadcrumbs mark the way,
While Docker builds push out to play.
Forms now validate without delay—
Welcome to the pagination buffet! 🌟

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title is vague and does not clearly convey the scope of the changes; 'four open source contributions' lacks specificity about what functionality was added. Consider a more specific title like 'feat: add Docker CI/CD, form validation, infinite scroll, and URL filter persistence' to better describe the actual changes.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed All four linked issues (#415, #408, #401, #400) have their acceptance criteria fully implemented: Docker workflow with multi-platform builds, form validation with disabled submit, IntersectionObserver pagination, and URL parameter synchronization.
Out of Scope Changes check ✅ Passed All changes are directly related to the four linked issues; no unrelated modifications or refactoring were introduced outside the specified objectives.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ritik4ever ritik4ever merged commit a27e538 into ritik4ever:main Jun 2, 2026
0 of 2 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