fix: pass final search results to onComplete callback
Fixes issue where results were displayed but not saved to database until
page refresh. Root cause: onComplete callback accessed stale searchResults
from closure instead of updated state.
Changes:
- useSearch.searchAllUsers: onComplete now receives SearchResult[] param
- useSearch: uses setSearchResults updater to get current state
- App.tsx: updated all 3 searchAllUsers calls to use finalResults
- Removed setTimeout workarounds
Result: Extension and file upload flows now save immediately after search.