diff --git a/src/apps/customer-portal/src/lib/services/talentSearch.service.ts b/src/apps/customer-portal/src/lib/services/talentSearch.service.ts index 14d34dd87..718bcae6c 100644 --- a/src/apps/customer-portal/src/lib/services/talentSearch.service.ts +++ b/src/apps/customer-portal/src/lib/services/talentSearch.service.ts @@ -26,6 +26,8 @@ export type MemberSearchPayload = { openToWork?: boolean page: number recentlyActive?: boolean + sortBy?: 'handle' | 'matchIndex' + sortOrder?: 'asc' | 'desc' skillSearchType: 'OR' skills: Array<{ id: string diff --git a/src/apps/customer-portal/src/pages/talent-search/TalentSearchPage/TalentSearchPage.tsx b/src/apps/customer-portal/src/pages/talent-search/TalentSearchPage/TalentSearchPage.tsx index 03fbadcc6..b62c33dfa 100644 --- a/src/apps/customer-portal/src/pages/talent-search/TalentSearchPage/TalentSearchPage.tsx +++ b/src/apps/customer-portal/src/pages/talent-search/TalentSearchPage/TalentSearchPage.tsx @@ -102,17 +102,8 @@ export const TalentSearchPage: FC = () => { return true }), [onlyActive, onlyOpenToWork, results]) - const displayedResults = useMemo(() => { - const sorted = [...filteredResults] - if (activeSort === 'matching-index') { - sorted.sort((a, b) => b.matchIndex - a.matchIndex) - return sorted - } - - sorted.sort((a, b) => String(a.handle || '') - .localeCompare(String(b.handle || ''), undefined, { sensitivity: 'base' })) - return sorted - }, [activeSort, filteredResults]) + // Order comes from reports-api (sortBy/sortOrder on each request) so pagination stays globally consistent. + const displayedResults = filteredResults const foundMembersCount = totalResults || displayedResults.length const displayedResultsWithCountryName = useMemo( @@ -175,6 +166,7 @@ export const TalentSearchPage: FC = () => { const openToWork = overrides?.openToWork ?? onlyOpenToWork const page = overrides?.page ?? 1 const recentlyActive = overrides?.recentlyActive ?? onlyActive + const hasSkills = skillsToSearch.length > 0 const payload: MemberSearchPayload = { limit: MEMBER_SEARCH_LIMIT, page, @@ -187,6 +179,8 @@ export const TalentSearchPage: FC = () => { wins: 1, })), skillSearchType: 'OR', + sortBy: hasSkills ? 'matchIndex' : 'handle', + sortOrder: hasSkills ? 'desc' : 'asc', } if (countries.length > 0) {