From 1b0ff8ce680b4d0d78e360d2ea27098f6255783a Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Wed, 5 Apr 2023 00:57:18 -0600 Subject: [PATCH] typescript hacks --- client/src/components/timerCard.tsx | 80 +++++++++++++++++------------ client/src/context/authContext.tsx | 2 +- client/src/routes/timers.tsx | 10 ++-- client/src/utils/types.ts | 2 +- 4 files changed, 56 insertions(+), 38 deletions(-) diff --git a/client/src/components/timerCard.tsx b/client/src/components/timerCard.tsx index a65c9e5..04adfc8 100644 --- a/client/src/components/timerCard.tsx +++ b/client/src/components/timerCard.tsx @@ -27,10 +27,13 @@ const replaceReferencedFriendsInName = ( }); }; -const refreshTimer = (id: number) => - fetch(`/api/timers/${id}/refresh`, { +const refreshTimer = (id?: number) => { + if (!id) return; + + return fetch(`/api/timers/${id}/refresh`, { method: "POST", }); +}; export type TimerCardProps = { timer: TimerResponse; @@ -41,18 +44,20 @@ export default function TimerCard({ timer, onSelect }: TimerCardProps) { const [since, setSince] = useState(""); useEffect(() => { - const start = new Date(timer.start); - let updateTimersInterval: ReturnType; - const msTillNextSecond = 1000 - (start.getTime() % 1000); + if (timer && timer.start) { + const start = new Date(timer.start); + let updateTimersInterval: ReturnType; + const msTillNextSecond = 1000 - (start.getTime() % 1000); - setSince(ago(start)); + setSince(ago(start)); - setTimeout(() => { - updateTimersInterval = setInterval(() => setSince(ago(start)), 1_000); - }, msTillNextSecond); + setTimeout(() => { + updateTimersInterval = setInterval(() => setSince(ago(start)), 1_000); + }, msTillNextSecond); - return () => clearInterval(updateTimersInterval); - }, [timer.start]); + return () => clearInterval(updateTimersInterval); + } + }, [timer?.start]); return (
@@ -63,36 +68,44 @@ export default function TimerCard({ timer, onSelect }: TimerCardProps) {

- {replaceReferencedFriendsInName( - timer.name, - timer.referenced_friends, - onSelect - ).map((element: JSX.Element | string, i: number) => ( - - {element} - - ))} + {timer?.name && timer?.referenced_friends ? ( + replaceReferencedFriendsInName( + timer.name, + timer.referenced_friends, + onSelect + ).map((element: JSX.Element | string, i: number) => ( + + {element} + + )) + ) : ( + <> + )}

- + {timer.created_by ? ( + + ) : ( +
has no creator?
+ )} +