33import Tooltip from '@node-core/ui-components/Common/Tooltip' ;
44import * as PartnerLogos from '@node-core/ui-components/Icons/PartnerLogos' ;
55
6- import { partners } from '#site/next.json.mjs ' ;
7- import { shuffle } from '#site/util/array ' ;
6+ import { providePartners } from '#site/next-data/providers/partners ' ;
7+ import { partners as allPartners } from '#site/next.json.mjs ' ;
88
99import type { Partner , PartnerCategory } from '#site/types' ;
1010import type { FC } from 'react' ;
@@ -25,33 +25,19 @@ const getPartners = async (
2525 category ?: PartnerCategory ,
2626 sort ?: 'name' | 'weight'
2727) => {
28- let result : Array < Partner > = [ ] ;
29-
30- const filteredPartners = category
31- ? partners . filter ( partner => partner . categories . includes ( category ) )
32- : partners ;
28+ let result : Array < Partner > ;
3329
3430 if ( sort === 'name' ) {
35- filteredPartners . sort ( ( a , b ) => a . name . localeCompare ( b . name ) ) ;
36- result = [ ...filteredPartners ] ;
37- }
38-
39- if ( sort === 'weight' ) {
40- const weightedPartners = filteredPartners . flatMap ( partner => {
41- const weight = partner . weight ?? 0 ;
42- return Array ( weight > 0 ? weight : 1 ) . fill ( partner ) ;
43- } ) ;
44-
31+ // For name sorting, just filter and sort directly - no need for weighted shuffling
32+ const filtered = category
33+ ? allPartners . filter ( p => p . categories . includes ( category ) )
34+ : allPartners ;
35+ result = filtered . toSorted ( ( a , b ) => a . name . localeCompare ( b . name ) ) ;
36+ } else {
37+ // For weight sorting, use cached weighted partners
4538 const minutes = 300 ; // Change every 5 minutes
4639 const seed = Math . floor ( Date . now ( ) / ( minutes * 1000 ) ) ;
47-
48- // Create a copy of the array to avoid modifying the original
49- const shuffled = await shuffle ( weightedPartners , seed ) ;
50-
51- // Remove duplicates while preserving order
52- const unique = Array . from ( new Set ( shuffled ) ) ;
53-
54- result = [ ...unique ] ;
40+ result = await providePartners ( seed , category ) ;
5541 }
5642
5743 return length ? result . slice ( 0 , length ) : result ;
0 commit comments