Skip to content

Commit 04aadad

Browse files
authored
feat: test placeholder for speaker images (#603)
- add placeholder for 2025 speakers - replace mongoDB logo
1 parent 91d2ca6 commit 04aadad

5 files changed

Lines changed: 22 additions & 8 deletions

File tree

pwa/app/(con)/[locale]/con/[edition]/conferences/[slug]/components/ConferenceSpeaker.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,11 @@ const ConferenceSpeaker = ({ conference }: SpeakerProps) => {
4444
)}
4545
>
4646
{conference.edition === "2025" ? (
47-
<SpeakerImage2025 speaker={speaker} image={image} />
47+
<SpeakerImage2025
48+
speaker={speaker}
49+
image={image}
50+
placeholder={placeholder}
51+
/>
4852
) : (
4953
<SpeakerImage image={image} placeholder={placeholder} />
5054
)}

pwa/app/(con)/[locale]/con/[edition]/speakers/[slug]/SpeakerPage.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,12 @@ export default function SpeakerPageTemplate({
4747
<div className="flex flex-col relative flex-wrap items-center bg-grey px-10 pb-10 pt-28 | lg:flex-row lg:items-start | sm:pb-20">
4848
<div className="w-72 h-72 | md:w-80 md:h-80 | lg:w-[400px] lg:h-[400px]">
4949
{edition === "2025" ? (
50-
<SpeakerImage2025 speaker={speakerData} big image={image} />
50+
<SpeakerImage2025
51+
speaker={speakerData}
52+
big
53+
image={image}
54+
placeholder={placeholder}
55+
/>
5156
) : (
5257
<SpeakerImage big image={image} placeholder={placeholder} />
5358
)}

pwa/components/con/speakers/SpeakerImage2025.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,10 @@ export default function SpeakerImage({
5757
big = false,
5858
hoverable = true,
5959
speaker,
60+
placeholder,
6061
}: SpeakerImageProps) {
6162
if (speaker.edition === "2025") {
62-
const { name } = speaker;
63+
const { name, } = speaker;
6364
const angle = nameToAngle(name);
6465
const size = nameToSize(name);
6566
const pos = cssPositionOnCircle(angle);
@@ -100,8 +101,12 @@ export default function SpeakerImage({
100101
)}
101102
alt=""
102103
fill
103-
sizes={big ? "(max-width: 768px) 400px, 800px" : "400px"}
104-
loading="lazy"
104+
sizes={big ? "(max-width: 768px) 350px, 600px" : "350px"}
105+
placeholder={
106+
placeholder
107+
? (placeholder as `data:image/${string}`)
108+
: undefined
109+
}
105110
/>
106111
</div>
107112
<div
-16.5 KB
Loading

pwa/utils/getPlaceholder.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ export const getPlaceholder = cache(async (imagePath: string) => {
55
try {
66
// Redimensionner l'image à une taille très petite
77
const resizedImageBuffer = await sharp(imagePath)
8-
.resize(50, 50)
9-
.jpeg({ mozjpeg: true, quality: 50 })
8+
.resize(20, 20)
9+
.png({ quality: 70 })
1010
.toBuffer();
1111

1212
// Convertir l'image redimensionnée en base64
1313
const base64Placeholder = resizedImageBuffer.toString("base64");
14-
return `data:image/jpeg;base64,${base64Placeholder}`;
14+
return `data:image/png;base64,${base64Placeholder}`;
1515
} catch (error) {
1616
console.error("The placeholder can't be generated: ", error);
1717
throw error;

0 commit comments

Comments
 (0)