Skip to content

Fix endpoints search/filter to work across all pages - #229

Merged
morcen merged 1 commit into
mainfrom
fix/issue-111-endpoints-search-pagination
Sep 19, 2026
Merged

morcen merged 1 commit into
mainfrom
fix/issue-111-endpoints-search-pagination

Conversation

@morcen

@morcen morcen commented Sep 18, 2026 •

Copy link
Copy Markdown
Owner

What was broken

The Endpoints management page's search box and status filter (resources/js/Pages/Endpoints/Index.vue) only operated on props.endpoints.data, which is just the current paginated page (15 records) returned by Laravel's paginator. A user with more than 15 endpoints who searched for a name/URL/description, or filtered by "Active"/"Inactive", would see "No endpoints found" even when a real match existed on another page — functionally broken search/filtering on a core management page.

This is the same root-cause bug class already fixed for the Events page in #227 (originally #97) — this addresses the separate, unfixed instance on the Endpoints page.

What changed

  • DashboardController::endpoints() now applies the search (matching name, url, description) and status (active/inactive) filters server-side, before pagination, and returns the applied filters as a prop.
  • Endpoints/Index.vue now submits the search/status filters as query params via Inertia's router.get (on Enter for the search box, on change for the status dropdown, and on "Clear"), mirroring the pattern already used on the Events and Deliveries pages, instead of filtering only the current page's data client-side.
  • Added tests/Feature/DashboardEndpointsSearchFilterTest.php covering: finding a match beyond the first page via search, finding a match beyond the first page via status filter, and confirming search still can't leak another user's endpoints.

Full test suite passes (264 passed, 1 pre-existing skip).

Fixes #111

…nt one

Endpoints/Index.vue filtered the search box and status dropdown purely
client-side over props.endpoints.data, which is only the current
paginated page (15 records). Any account with more than one page of
endpoints would see "No endpoints found" for a search term or status
that existed on another page, even though a real match existed.

DashboardController::endpoints() now applies the search/status filters
server-side before paginating. The Vue page submits filters as query
params via Inertia's router.get, mirroring the pattern already used on
the Events and Deliveries pages.

Fixes #111
@morcen
morcen merged commit f6fa73e into main Sep 19, 2026
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

Development

Successfully merging this pull request may close these issues.

Endpoints Index.vue search/status filter only searches the current paginated page, silently hiding real matches

1 participant