File tree Expand file tree Collapse file tree 1 file changed +12
-6
lines changed
apps/site/components/Common/Partners Expand file tree Collapse file tree 1 file changed +12
-6
lines changed Original file line number Diff line number Diff line change @@ -27,20 +27,26 @@ function randomPartnerList(
27
27
const seed = fixedTime . getTime ( ) ;
28
28
const rng = mulberry32 ( seed ) ;
29
29
30
+ const weightedPartners = partners . flatMap ( partner => {
31
+ if ( category && ! partner . categories . includes ( category ) ) return [ ] ;
32
+ const weight = partner . weight ;
33
+ return Array ( weight ) . fill ( partner ) ;
34
+ } ) ;
35
+
30
36
// Create a copy of the array to avoid modifying the original
31
- let shuffled = [ ...partners ]
32
- . filter ( partner => ! category || partner . categories . includes ( category ) )
33
- . sort ( ( ) => rng ( ) - 0.5 ) ;
37
+ const shuffled = [ ...weightedPartners ] . sort ( ( ) => rng ( ) - 0.5 ) ;
38
+
39
+ // Remove duplicates while preserving order
40
+ const unique = Array . from ( new Set ( shuffled ) ) ;
34
41
35
42
if ( pick !== null ) {
36
- shuffled = shuffled . slice ( 0 , pick ) ;
43
+ return unique . slice ( 0 , pick ) ;
37
44
}
38
45
39
- return shuffled ;
46
+ return unique ;
40
47
}
41
48
42
49
// This function returns a random list of partners based on a fixed time seed
43
-
44
50
function mulberry32 ( seed : number ) {
45
51
return function ( ) {
46
52
let t = ( seed += 0x6d2b79f5 ) ;
You can’t perform that action at this time.
0 commit comments