|
1 | 1 | import DirectusImage from "./DirectusImage";
|
2 |
| -import { locale, translate } from "@/locales"; |
| 2 | +import { getTranslation } from "@/locales"; |
3 | 3 | import styles from "@/styles/PartnersList.module.scss";
|
4 |
| -import { Partner } from "@/types/aliases"; |
| 4 | +import { Partner, PartnerCategory } from "@/types/aliases"; |
5 | 5 | import Link from "next/link";
|
6 | 6 | import { useRouter } from "next/router";
|
7 | 7 |
|
8 |
| -export default function PartnersList({ partners }: { partners: Partner[] }) { |
9 |
| - if (partners.length == 0) { |
10 |
| - return; |
| 8 | +function PartnerDisplay({ p }: { p: Partner }) { |
| 9 | + return ( |
| 10 | + <Link href={p.link || ""} key={p.id}> |
| 11 | + <DirectusImage img={p.logo} name={p.name} className={styles.logo} /> |
| 12 | + </Link> |
| 13 | + ); |
| 14 | +} |
| 15 | + |
| 16 | +function PartnerCategoryDisplay({ |
| 17 | + c, |
| 18 | + p, |
| 19 | +}: { |
| 20 | + c: PartnerCategory; |
| 21 | + p: Partner[]; |
| 22 | +}) { |
| 23 | + const router = useRouter(); |
| 24 | + const entries = p |
| 25 | + .filter((p) => Date.parse(p.end || "01/01/1970") > Date.now()) |
| 26 | + .map((p) => <PartnerDisplay key={p.id} p={p} />); |
| 27 | + |
| 28 | + if (entries.length === 0) { |
| 29 | + console.log("noooo"); |
| 30 | + return <></>; |
11 | 31 | }
|
12 | 32 |
|
13 |
| - var list: any = []; |
14 |
| - partners.forEach((p) => { |
15 |
| - list.push( |
16 |
| - <Link href={p.link || ""} key={p.id}> |
17 |
| - <DirectusImage img={p.logo} name={p.name} className={styles.logo} /> |
18 |
| - </Link> |
19 |
| - ); |
20 |
| - }); |
| 33 | + return ( |
| 34 | + <> |
| 35 | + <h1 className="light">{getTranslation(c, router.locale).name}</h1> |
| 36 | + <div className={styles.list}>{entries}</div> |
| 37 | + </> |
| 38 | + ); |
| 39 | +} |
| 40 | + |
| 41 | +export default function PartnersList({ |
| 42 | + partners, |
| 43 | +}: { |
| 44 | + partners: [PartnerCategory, Partner[]][]; |
| 45 | +}) { |
| 46 | + partners.sort((a, b) => (b[0].rank || Infinity) - (a[0].rank || Infinity)); |
21 | 47 |
|
22 |
| - var router = useRouter(); |
23 | 48 | return (
|
24 | 49 | <div className={styles.partnersList}>
|
25 |
| - <h1 className="light"> |
26 |
| - {translate("partners", locale(router), { capitalize: true })}{" "} |
27 |
| - </h1> |
28 |
| - <div className={styles.list}>{list}</div> |
| 50 | + {partners.map((e) => ( |
| 51 | + <PartnerCategoryDisplay key={e[0].id} c={e[0]} p={e[1]} /> |
| 52 | + ))} |
29 | 53 | </div>
|
30 | 54 | );
|
31 | 55 | }
|
0 commit comments