diff --git a/apps/web/app/dashboard/day/[dateQuery]/page.tsx b/apps/web/app/dashboard/day/[dateQuery]/page.tsx index 75edc0d..dab9ace 100644 --- a/apps/web/app/dashboard/day/[dateQuery]/page.tsx +++ b/apps/web/app/dashboard/day/[dateQuery]/page.tsx @@ -1,10 +1,17 @@ -import { notFound } from "next/navigation"; +import { notFound, redirect } from "next/navigation"; import { api } from "@/server/api/client"; import { TRPCError } from "@trpc/server"; import DayView from "@/components/dashboard/days/DayView"; +import { getServerAuthSession } from "@/server/auth"; import LoadingSpinner from "@/components/ui/spinner"; export default async function DayPage({ params }: { params: { dateQuery: string }; }) { + const session = await getServerAuthSession(); + if (!session) { + redirect("/"); + } + + let day; const { dateQuery } = await params; const timezone = await api.users.getTimezone(); diff --git a/apps/web/components/dashboard/days/DayView.tsx b/apps/web/components/dashboard/days/DayView.tsx index 6e07fdc..bc9e2cc 100644 --- a/apps/web/components/dashboard/days/DayView.tsx +++ b/apps/web/components/dashboard/days/DayView.tsx @@ -1,7 +1,7 @@ +"use client"; import { redirect } from "next/navigation"; import { Separator } from "@/components/ui/separator"; -import { getServerAuthSession } from "@/server/auth"; -import { ZDay } from "@lifetracker/shared/types/days"; +import { ZDay, ZHour } from "@lifetracker/shared/types/days"; import EditableDayComment from "./EditableDayComment"; import { MoodStars } from "./MoodStars"; import Link from "next/link"; @@ -10,26 +10,21 @@ import { ArrowLeftSquare, ArrowRightSquare } from "lucide-react"; import spacetime from "spacetime"; import EditableHour from "@/components/dashboard/hours/EditableHour"; import { DayMetrics } from "./DayMetrics"; -import { api } from "@/server/api/client"; - -export default async function DayView({ +import { api } from "@/lib/trpc"; +export default function DayView({ day, }: { day: ZDay; }) { - const session = await getServerAuthSession(); - if (!session) { - redirect("/"); - } const prevDay = spacetime(day.date).subtract(1, "day").format("iso-short"); const nextDay = spacetime(day.date).add(1, "day").format("iso-short"); - const userMetrics = await api.metrics.list(); + const { data: userMetrics } = api.metrics.list.useQuery(); const groupConsecutiveHours = (day: ZDay) => { const result = []; - let currentGroup = []; + let currentGroup: ZHour[] = []; for (const hour of day.hours) { if (hour.categoryCode === null) { @@ -113,8 +108,9 @@ export default async function DayView({ - + : } ); diff --git a/apps/web/components/dashboard/hours/EditableHour.tsx b/apps/web/components/dashboard/hours/EditableHour.tsx index aadd690..4acbec8 100644 --- a/apps/web/components/dashboard/hours/EditableHour.tsx +++ b/apps/web/components/dashboard/hours/EditableHour.tsx @@ -37,7 +37,7 @@ export default function EditableHour({ i: number, j: number, hourGroup: ZHour[], - metrics: ZMetric[], + metrics: ZMetric[] | undefined, isConsecutiveHour?: boolean, className?: string; }) { @@ -114,6 +114,7 @@ export default function EditableHour({ function reload(newHour: ZHour) { setHour(newHour); } + return (
) : Array.from({ length: m.value }).map((_, index) =>
{ diff --git a/apps/web/components/dashboard/hours/HourMeasurementsDialog.tsx b/apps/web/components/dashboard/hours/HourMeasurementsDialog.tsx index 78f9eea..3c613a0 100644 --- a/apps/web/components/dashboard/hours/HourMeasurementsDialog.tsx +++ b/apps/web/components/dashboard/hours/HourMeasurementsDialog.tsx @@ -252,7 +252,7 @@ export default function HourMeasurementsDialog({ } {Object.keys(metricsByType).map(type => ( - <> +
{titleCase(type)}
{metricsByType[type].map(metric => ( @@ -266,7 +266,8 @@ export default function HourMeasurementsDialog({ {metric.name} ))} -
+
+
))}