Skip to content

feat: searchable Item Name field (+ React 18 / Router 7 / Redux 5 upgrade)#51

Merged
dhighwayman merged 2 commits into
masterfrom
chore/react19-router-redux
May 31, 2026
Merged

feat: searchable Item Name field (+ React 18 / Router 7 / Redux 5 upgrade)#51
dhighwayman merged 2 commits into
masterfrom
chore/react19-router-redux

Conversation

@dhighwayman

Copy link
Copy Markdown
Contributor

What

Two commits land together here, since the search feature is built on the dependency upgrade:

  1. React 18 / Router 7 / Redux 5 + modern toast/helmet upgrade (b8183a5)
  2. Searchable "Item name" field (8b0bbfa) — turns the add-item name input into a search-as-you-type box backed by external catalogs.

Search feature

Typing in the Item Name field queries the backend GET /search/?q= endpoint (see backend PR #6) and shows grouped suggestions; selecting one autofills the name, URL and picture.

  • _itemSearchField.js — new debounced (300ms, ≥2 chars) typeahead with a grouped dropdown (Books / Movies & TV / Music), thumbnails, click-outside-to-close, and on-select autofill of name/url/pic_url via Formik setFieldValue.
  • list.service.jssearchExternal(idToken, query)GET /search/?q= with Bearer auth.
  • ListPage.js — adds pic_url to Formik initialValues and swaps the name Field for ItemSearchField. Free typing still works (backend falls back to og:image scraping when no picture is supplied).

Verified

npm run build (Vite) passes.

Depends on

Backend PR curatedlist/backend#6 (the /search/ endpoint) and a TMDB_API_KEY set on the back Cloud Run service (already configured).

🤖 Generated with Claude Code

David Santamaria and others added 2 commits May 30, 2026 20:03
The React/router/redux modernization (4b), targeting React 18 (see note below).

- react/react-dom 16 -> 18 (ReactDOM.render -> createRoot)
- react-router-dom 5 -> 7: Switch->Routes, component/render->element; refactor
  withRouter / props.history / props.match to useNavigate / useParams / Navigate
  (Login, CustomNavbar, Create, Edit, Profile, CreateList, ListPage)
- redux 4 -> 5, react-redux 7 -> 9
- react-toast-notifications (unmaintained, breaks on React 18+) -> react-hot-toast
  (ToastProvider -> <Toaster>, useToasts/addToast -> toast.success/.error)
- react-helmet -> react-helmet-async (+ HelmetProvider)

React 19 deferred: it removed ReactDOM.findDOMNode, which reactstrap 8 relies
on; reaching 19 needs replacing reactstrap + the Argon Bootstrap-4 theme (a UI
rebuild). React 18 keeps reactstrap/Argon working.

Verified: vite build green; production image runs; app mounts, images render,
client-side routing works, Toaster + Google button render. Login/create/fav
flows pending manual verification (need live Google auth).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Turn the "Item name" input on a list into a search-as-you-type box that
queries books / movies & TV / music catalogs at once. Selecting a result
autofills the item name, URL and picture (skipping the og:image scrape).

- _itemSearchField.js: debounced typeahead with a grouped suggestions
  dropdown (Books / Movies & TV / Music), thumbnails, click-outside close,
  and on-select autofill of name/url/pic_url via Formik setFieldValue.
- list.service.js: searchExternal(idToken, query) -> GET /search/?q=
- ListPage.js: add pic_url to Formik initialValues and swap the name
  Field for ItemSearchField. Free typing still works (og:image fallback).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@dhighwayman dhighwayman merged commit a873df6 into master May 31, 2026
@dhighwayman dhighwayman deleted the chore/react19-router-redux branch May 31, 2026 08:36
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.

1 participant