From 7b2c1e9881f55f711f96c0f5c61a1d577dc14001 Mon Sep 17 00:00:00 2001 From: sugar-cat7 Date: Fri, 23 Aug 2024 08:23:38 +0900 Subject: [PATCH 1/3] remove: await --- service/vspo-schedule/web/src/pages/schedule/[status].tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/service/vspo-schedule/web/src/pages/schedule/[status].tsx b/service/vspo-schedule/web/src/pages/schedule/[status].tsx index 552a96bb..c978e993 100644 --- a/service/vspo-schedule/web/src/pages/schedule/[status].tsx +++ b/service/vspo-schedule/web/src/pages/schedule/[status].tsx @@ -155,7 +155,7 @@ export const getServerSideProps: GetServerSideProps< endedDate.setDate(endedDate.getDate() + 1); const today = getCurrentUTCDate(); - return await fetchLivestreams({ + return fetchLivestreams({ limit: params.status === "archive" ? 300 : 50, lang: locale, status: params.status, @@ -174,7 +174,7 @@ export const getServerSideProps: GetServerSideProps< // Logic 2: Fetch events const fetchEventsData = async () => { - return await fetchEvents({ lang: locale }); + return fetchEvents({ lang: locale }); }; // Logic 3: Fetch translations and create metadata From fb7d9d8e72f4212ec53ee0eb77cd306a5da45e71 Mon Sep 17 00:00:00 2001 From: sugar-cat7 Date: Fri, 23 Aug 2024 08:29:37 +0900 Subject: [PATCH 2/3] fix: livestreamsByDate calc --- .../web/src/pages/schedule/[status].tsx | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/service/vspo-schedule/web/src/pages/schedule/[status].tsx b/service/vspo-schedule/web/src/pages/schedule/[status].tsx index c978e993..447950b1 100644 --- a/service/vspo-schedule/web/src/pages/schedule/[status].tsx +++ b/service/vspo-schedule/web/src/pages/schedule/[status].tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useMemo } from "react"; import { Box, Tab, Tabs } from "@mui/material"; import { styled } from "@mui/material/styles"; import { GetServerSideProps } from "next"; @@ -37,11 +37,12 @@ type DateObject = { }; type LivestreamsProps = { - livestreamsByDate: Record; + livestreams: Livestream[]; eventsByDate: Record; lastUpdateTimestamp: number; liveStatus: string; locale: string; + timeZone: string; dateTabsInfo?: { tabDates: DateObject[]; todayIndex: number; @@ -71,12 +72,22 @@ const TabBox = styled(Box)(({ theme }) => ({ })); const HomePage: NextPageWithLayout = ({ - livestreamsByDate, + livestreams, eventsByDate, dateTabsInfo, + timeZone, }) => { const router = useRouter(); const { t } = useTranslation("streams"); + + const livestreamsByDate = useMemo(() => { + return groupBy(livestreams, (livestream) => { + return formatDate(livestream.scheduledStartTime, "yyyy-MM-dd", { + timeZone, + }); + }); + }, [livestreams, timeZone]); + if (router.isFallback) { return ; } @@ -320,19 +331,6 @@ export const getServerSideProps: GetServerSideProps< .join(", ") ?? ""; const description = `${t("description")}\n${livestreamDescription}`; - const filteredLivestreams = uniqueLivestreams; - - const livestreamsByDate = groupBy(filteredLivestreams, (livestream) => { - try { - return formatDate(livestream.scheduledStartTime, "yyyy-MM-dd", { - timeZone, - }); - } catch (err) { - console.error("Invalid date:", livestream.scheduledStartTime); - throw err; - } - }); - const eventsByDate = groupBy(events, (event) => { try { return formatDate(event.startedAt, "yyyy-MM-dd", { timeZone }); @@ -345,7 +343,8 @@ export const getServerSideProps: GetServerSideProps< return { props: { ...translations, - livestreamsByDate, + livestreams: uniqueLivestreams, + timeZone, eventsByDate, lastUpdateTimestamp: getCurrentUTCDate().getTime(), liveStatus: params.status, From 2719076a5f8797dbd0c81655e17d07f184656478 Mon Sep 17 00:00:00 2001 From: sugar-cat7 Date: Fri, 23 Aug 2024 08:35:37 +0900 Subject: [PATCH 3/3] fix: eventsByDate calc --- .../web/src/pages/schedule/[status].tsx | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/service/vspo-schedule/web/src/pages/schedule/[status].tsx b/service/vspo-schedule/web/src/pages/schedule/[status].tsx index 447950b1..4fa82f33 100644 --- a/service/vspo-schedule/web/src/pages/schedule/[status].tsx +++ b/service/vspo-schedule/web/src/pages/schedule/[status].tsx @@ -38,7 +38,7 @@ type DateObject = { type LivestreamsProps = { livestreams: Livestream[]; - eventsByDate: Record; + events: VspoEvent[]; lastUpdateTimestamp: number; liveStatus: string; locale: string; @@ -73,7 +73,7 @@ const TabBox = styled(Box)(({ theme }) => ({ const HomePage: NextPageWithLayout = ({ livestreams, - eventsByDate, + events, dateTabsInfo, timeZone, }) => { @@ -87,6 +87,11 @@ const HomePage: NextPageWithLayout = ({ }); }); }, [livestreams, timeZone]); + const eventsByDate = useMemo(() => { + return groupBy(events, (event) => { + return formatDate(event.startedAt, "yyyy-MM-dd", { timeZone }); + }); + }, [events, timeZone]); if (router.isFallback) { return ; @@ -331,21 +336,12 @@ export const getServerSideProps: GetServerSideProps< .join(", ") ?? ""; const description = `${t("description")}\n${livestreamDescription}`; - const eventsByDate = groupBy(events, (event) => { - try { - return formatDate(event.startedAt, "yyyy-MM-dd", { timeZone }); - } catch (err) { - console.error("Invalid date:", event.startedAt); - throw err; - } - }); - return { props: { ...translations, livestreams: uniqueLivestreams, + events, timeZone, - eventsByDate, lastUpdateTimestamp: getCurrentUTCDate().getTime(), liveStatus: params.status, locale: locale,