Skip to content

Commit e36bbd9

Browse files
committed
Show random sessions if no upcoming; Don't show spin progress outside event dates
1 parent 3d7d1de commit e36bbd9

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

src/app/(authenticated)/home/page.tsx

+23-5
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,20 @@ export default async function Home() {
3131
const companies = await CompanyService.getCompanies();
3232
const speakers = await SpeakerService.getSpeakers();
3333

34-
// choose upcoming sessions
34+
// choose upcoming or random sessions
3535
const tenMinutesEarlier = new Date(new Date().getTime() - 10 * 60 * 1000);
3636
const upcomingSessions: SINFOSession[] = eventSessions
3737
? eventSessions
3838
.filter((s) => new Date(s.date) >= tenMinutesEarlier)
3939
.sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime())
4040
.slice(0, N_SESSION_TILES)
4141
: [];
42+
const highlightedSessions =
43+
upcomingSessions.length > 0
44+
? upcomingSessions
45+
: (eventSessions
46+
?.sort(() => Math.random() - 0.5)
47+
.slice(0, N_SESSION_TILES) ?? []);
4248

4349
// choose random companies
4450
const highlightedCompanies: Company[] = companies
@@ -50,9 +56,15 @@ export default async function Home() {
5056
? speakers.sort(() => Math.random() - 0.5).slice(0, N_SPEAKER_TILES)
5157
: [];
5258

59+
let standDates = new Set(
60+
companies?.flatMap(
61+
(c) => c.stands?.flatMap((cs) => cs.date.slice(0, 10)) ?? []
62+
) ?? []
63+
);
64+
let today = new Date().toISOString().split("T")[0];
5365
const spinWheelData = getUserActiveSignatureData(user, event?.id ?? ``);
5466
const showSpinWheelSection =
55-
isAttendee(user.role) && !spinWheelData?.redeemed;
67+
standDates.has(today) && isAttendee(user.role) && !spinWheelData?.redeemed;
5668

5769
return (
5870
<div className="container mx-auto">
@@ -78,9 +90,15 @@ export default async function Home() {
7890
)}
7991

8092
{/* Upcoming Sessions */}
81-
<List title="Next Up" link="/schedule?day=today" linkText="See all">
82-
{upcomingSessions.length > 0 ? (
83-
upcomingSessions.map((s) => <SessionTile key={s.id} session={s} />)
93+
<List
94+
title={upcomingSessions.length > 0 ? "Next Up" : "Sessions"}
95+
link="/schedule?day=today"
96+
linkText="See all"
97+
>
98+
{highlightedSessions.length > 0 ? (
99+
highlightedSessions.map((s) => (
100+
<SessionTile key={s.id} session={s} indicatePastSession={false} />
101+
))
84102
) : (
85103
<ListCard title="Nothing to show" />
86104
)}

src/components/session/SessionTile.tsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ import { generateTimeInterval, getSessionColor } from "@/utils/utils";
44
interface SesionTileProps {
55
session: SINFOSession;
66
onlyShowHours?: boolean;
7+
indicatePastSession?: boolean;
78
}
89

910
export function SessionTile({
1011
session,
1112
onlyShowHours = false,
13+
indicatePastSession = true,
1214
}: SesionTileProps) {
1315
const speakersNames = session.speakers
1416
?.map((s) => s.name)
@@ -32,7 +34,9 @@ export function SessionTile({
3234
labelColor={getSessionColor(session.kind)}
3335
link={`/sessions/${session.id}`}
3436
extraClassName={
35-
pastSession ? "!bg-neutral-200 hover:!bg-neutral-300" : ""
37+
indicatePastSession && pastSession
38+
? "!bg-neutral-200 hover:!bg-neutral-300"
39+
: undefined
3640
}
3741
/>
3842
);

0 commit comments

Comments
 (0)