From 6c1d7c25d1d6f6ce7ca56b9a87164ba086f0d363 Mon Sep 17 00:00:00 2001 From: toashid-tech Date: Tue, 9 Dec 2025 17:50:40 -0800 Subject: [PATCH 1/4] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d3e0a06..6ce6f26 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ next-env.d.ts # Nix flake.lock +.env*.local From caf8a0fe1c4ab8b9359cc89096172f1616abe61f Mon Sep 17 00:00:00 2001 From: toashid-tech Date: Tue, 9 Dec 2025 18:04:50 -0800 Subject: [PATCH 2/4] getting data from @/app/events/page getEvents function --- app/events/page.tsx | 2 +- app/page.tsx | 2 ++ components/HomepageBanner/HomepageBanner.tsx | 8 ++++++++ components/HomepageBanner/index.ts | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 components/HomepageBanner/HomepageBanner.tsx create mode 100644 components/HomepageBanner/index.ts diff --git a/app/events/page.tsx b/app/events/page.tsx index 33466f7..225eade 100644 --- a/app/events/page.tsx +++ b/app/events/page.tsx @@ -14,7 +14,7 @@ import styles from './Events.module.css' type CompleteEventDetails = EventDetails & { end: number, link: string | null } export type EventFrontmatter = Omit & { event_details: CompleteEventDetails } -async function getEvents() { +export async function getEvents() { const markdownFiles = await generateUnmodifiedSlugsFromMarkdownFiles('app/events') const events: Frontmatter[] = [] for (const { slug } of markdownFiles) { diff --git a/app/page.tsx b/app/page.tsx index 0225ac9..ae559a0 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,5 +1,6 @@ import { NavItems } from '@/components/NavItems' import { HomeLoop } from '@/components/HomeLoop' +import { HomepageBanner } from "@/components/HomepageBanner"; import styles from './Home.module.css' @@ -7,6 +8,7 @@ export default function Home() { return ( <>
+

compsigh

compsigh is the social computer science club at USFCA for meeting cool people && building cool things. We host high-quality, low-stakes events, and engage in a vibrant community. diff --git a/components/HomepageBanner/HomepageBanner.tsx b/components/HomepageBanner/HomepageBanner.tsx new file mode 100644 index 0000000..c7dc82f --- /dev/null +++ b/components/HomepageBanner/HomepageBanner.tsx @@ -0,0 +1,8 @@ +import { getEvents } from "@/app/events/page"; +import { EventFrontmatter } from "@/app/events/page"; + +export async function HomepageBanner() { + const events: EventFrontmatter[] = await getEvents(); + console.log(events); + return

HEllO

; +} \ No newline at end of file diff --git a/components/HomepageBanner/index.ts b/components/HomepageBanner/index.ts new file mode 100644 index 0000000..086986a --- /dev/null +++ b/components/HomepageBanner/index.ts @@ -0,0 +1 @@ +export { HomepageBanner } from './HomepageBanner' \ No newline at end of file From cd2c3b104aa44ebbf5b6ba928f8ebbc763c43f86 Mon Sep 17 00:00:00 2001 From: toashid-tech Date: Tue, 23 Dec 2025 20:52:39 -0800 Subject: [PATCH 3/4] getting time and comparing --- app/page.tsx | 19 +++++---- components/HomepageBanner/HomepageBanner.tsx | 44 +++++++++++++++++--- 2 files changed, 50 insertions(+), 13 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index ae559a0..039792f 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,17 +1,22 @@ -import { NavItems } from '@/components/NavItems' -import { HomeLoop } from '@/components/HomeLoop' +import { NavItems } from "@/components/NavItems"; +import { HomeLoop } from "@/components/HomeLoop"; import { HomepageBanner } from "@/components/HomepageBanner"; +import { getEvents } from "./events/page"; -import styles from './Home.module.css' +import styles from "./Home.module.css"; + +export default async function Home() { + const events = await getEvents(); -export default function Home() { return ( <>
- +

compsigh

- compsigh is the social computer science club at USFCA for meeting cool people && building cool things. We host high-quality, low-stakes events, and engage in a vibrant community. + compsigh is the social computer science club at USFCA for meeting cool + people && building cool things. We host high-quality, + low-stakes events, and engage in a vibrant community.

- ) + ); } diff --git a/components/HomepageBanner/HomepageBanner.tsx b/components/HomepageBanner/HomepageBanner.tsx index c7dc82f..78d9559 100644 --- a/components/HomepageBanner/HomepageBanner.tsx +++ b/components/HomepageBanner/HomepageBanner.tsx @@ -1,8 +1,40 @@ -import { getEvents } from "@/app/events/page"; +"use client"; import { EventFrontmatter } from "@/app/events/page"; +import Link from "next/link"; -export async function HomepageBanner() { - const events: EventFrontmatter[] = await getEvents(); - console.log(events); - return

HEllO

; -} \ No newline at end of file +export function HomepageBanner({ events }: { events: EventFrontmatter[] }) { + const currentTime = Math.floor(new Date().getTime() / 1000); + if (events.length === 0) return <>; + + const updatedEvents: EventFrontmatter[] = [ + ...events, + { + title: "DAVE", + description: "register!", + event_details: { + start: 1766551860, + end: 9999999999999, + location: "The Hive", + cover_image: "/events/2025-11-07/deploy25.png", + pictures: [], + link: "https://touch-grass.com", + }, + slug: "events/2025-11-07/deploy25", + }, + ]; + + const upcomingEvents: EventFrontmatter[] = []; + for (const event of updatedEvents) + if (currentTime < event.event_details.start) upcomingEvents.push(event); + + if (upcomingEvents.length === 0) return <>; + const nearestUpcomingEvent = upcomingEvents[0]; + const title = nearestUpcomingEvent.title; + const eventLink = nearestUpcomingEvent.event_details.link!; + + return ( + +

"{title}" is coming up.

+ + ); +} From 8abfde029e340a19575eab3c0f64446a06095f56 Mon Sep 17 00:00:00 2001 From: toashid-tech Date: Mon, 29 Dec 2025 20:25:37 -0800 Subject: [PATCH 4/4] EVENT URL CHECK --- components/HomepageBanner/HomepageBanner.tsx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/components/HomepageBanner/HomepageBanner.tsx b/components/HomepageBanner/HomepageBanner.tsx index 78d9559..975b3bd 100644 --- a/components/HomepageBanner/HomepageBanner.tsx +++ b/components/HomepageBanner/HomepageBanner.tsx @@ -1,7 +1,17 @@ "use client"; + import { EventFrontmatter } from "@/app/events/page"; import Link from "next/link"; +function isValidURL(url: string): boolean { + try { + new URL(url); + return true; + } catch { + return false; + } +} + export function HomepageBanner({ events }: { events: EventFrontmatter[] }) { const currentTime = Math.floor(new Date().getTime() / 1000); if (events.length === 0) return <>; @@ -12,12 +22,12 @@ export function HomepageBanner({ events }: { events: EventFrontmatter[] }) { title: "DAVE", description: "register!", event_details: { - start: 1766551860, + start: 17665518600, end: 9999999999999, location: "The Hive", cover_image: "/events/2025-11-07/deploy25.png", pictures: [], - link: "https://touch-grass.com", + link: "/", }, slug: "events/2025-11-07/deploy25", }, @@ -32,6 +42,8 @@ export function HomepageBanner({ events }: { events: EventFrontmatter[] }) { const title = nearestUpcomingEvent.title; const eventLink = nearestUpcomingEvent.event_details.link!; + if (!isValidURL(eventLink)) return <>; + return (

"{title}" is coming up.