Skip to content

Commit bfe0bcb

Browse files
committed
fix refetch interval
1 parent 4d1e3f9 commit bfe0bcb

5 files changed

Lines changed: 34 additions & 28 deletions

File tree

src/App.tsx

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEffect } from "react";
1+
import { useEffect, useState } from "react";
22
import { ScreenCycle } from "./components/screen-cycle";
33
import { CalendarScreen } from "./pages/calendar-screen";
44
import { MessageScreen } from "./pages/message-screen";
@@ -25,21 +25,28 @@ export default function App() {
2525
return () => clearInterval(interval);
2626
}, []);
2727

28-
let visibleScreens = [CalendarScreen, TransportScreen];
29-
if (isAugust()) {
30-
visibleScreens.push(WelcomeScreen);
31-
}
28+
const [visibleScreens, setVisibleScreens] = useState([<CalendarScreen />, <TransportScreen />]);
3229

33-
if (message?.title && message?.body && isMsgExpired(message._createdAt)) {
34-
visibleScreens.push(MessageScreen);
35-
}
30+
useEffect(() => {
31+
if (vaffel?.status === "open") {
32+
setVisibleScreens([
33+
<VaffelScreen queue={vaffel.queue} status={vaffel.status} total={vaffel.total} />,
34+
]);
35+
return;
36+
}
37+
38+
const screens = [<CalendarScreen />, <TransportScreen />];
39+
40+
if (isAugust()) {
41+
screens.push(<WelcomeScreen />);
42+
}
43+
44+
if (message?.title && message?.body && isMsgExpired(message._createdAt)) {
45+
screens.push(<MessageScreen />);
46+
}
3647

37-
if (vaffel?.status === "open") {
38-
console.log(JSON.stringify(vaffel));
39-
visibleScreens = [
40-
() => <VaffelScreen queue={vaffel.queue} status={vaffel.status} total={vaffel.total} />
41-
];
42-
}
48+
setVisibleScreens(screens);
49+
}, [message, vaffel]);
4350

4451
const isValentines = isValentinesSeason();
4552
document.body.classList.toggle("valentines", isValentines);
@@ -53,7 +60,7 @@ export default function App() {
5360
}`}
5461
>
5562
<DateTime />
56-
<ScreenCycle screens={visibleScreens} />
63+
<ScreenCycle screens={visibleScreens} />
5764
</main>
5865
</>
5966
);

src/components/screen-cycle.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import { useState, useEffect } from "react";
22
import { motion, AnimatePresence } from "framer-motion";
33
import { ProgressBar } from "./progress-bar";
44
import { TRANSITION_TIME } from "../config";
5+
import { type ReactNode } from "react";
56

67
type ScreenCycleProps = {
7-
screens: Array<React.FC>;
8+
screens: Array<ReactNode>;
89
};
910

1011
export const ScreenCycle = ({ screens }: ScreenCycleProps) => {
@@ -43,8 +44,6 @@ export const ScreenCycle = ({ screens }: ScreenCycleProps) => {
4344
return () => window.removeEventListener("keydown", handleKeyDown);
4445
}, [screens.length]);
4546

46-
const CurrentScreen = screens[screenIndex];
47-
4847
return (
4948
<div className="flex-1">
5049
{/* `key` is hack to force unmount the progressbar on change */}
@@ -61,7 +60,7 @@ export const ScreenCycle = ({ screens }: ScreenCycleProps) => {
6160
transition={{ duration: 1 }}
6261
className="w-full h-full"
6362
>
64-
<CurrentScreen />
63+
{screens[screenIndex]}
6564
</motion.div>
6665
</AnimatePresence>
6766
</div>

src/components/vaffel.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"use client";
22
import { useEffect, useRef } from "react";
33

4-
export default function HeartsMinimal() {
4+
export default function HeartsMinimal({ amount }: { amount: number }) {
55
const ref = useRef<HTMLCanvasElement | null>(null);
66

77
useEffect(() => {
@@ -54,7 +54,7 @@ export default function HeartsMinimal() {
5454
};
5555

5656
const hearts: Heart[] = [];
57-
const numHearts = randomInt(150, 200);
57+
const numHearts = amount;
5858

5959
for (let i = 0; i < numHearts; i += 1) {
6060
hearts.push({
@@ -120,7 +120,7 @@ export default function HeartsMinimal() {
120120
cancelAnimationFrame(raf);
121121
window.removeEventListener("resize", resize);
122122
};
123-
}, []);
123+
}, [amount]);
124124

125125
return (
126126
<canvas

src/hooks/use-vaffel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ export function useVaffel() {
2424

2525
return { queue, status, total };
2626
},
27-
staleTime: 1000
27+
refetchInterval : 1000
2828
});
2929
}

src/pages/vaffel-screen.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ type VaffelProps = {
1010
export default function VaffelScreen({ queue, status, total }: VaffelProps) {
1111
return (
1212
<div className="w-full h-full flex items-center justify-center">
13-
<WaffleRain />
13+
<WaffleRain amount={total} />
1414
<div className="bg-background/80 border-2 shadow-lg rounded-2xl p-8 max-w-2xl w-full text-center overflow-hidden">
15-
<h1 className="text-3xl font-semibold mb-2">Vaffelkøen </h1>
15+
<h1 className="text-3xl font-semibold mb-2">Vaffelkø</h1>
1616
<p className="text-lg font-semibold mb-6 space-x-2">
1717
Status:{" "}
1818
<span
@@ -28,15 +28,15 @@ export default function VaffelScreen({ queue, status, total }: VaffelProps) {
2828
</p>
2929

3030
{queue.length === 0 ? (
31-
<p className="text-2xl text-gray-400">Ingen i køen</p>
31+
<p className="text-gray-800">Ingen i køen</p>
3232
) : (
3333
<ul>
3434
{queue.map((person, index) => (
3535
<li
3636
key={person.user_id}
37-
className="flex items-center gap-2 rounded-xl px-6 text-xl font-medium "
37+
className="flex items-center gap-2 rounded-xl px-6 "
3838
>
39-
<span className=" w-6 text-right">{index} - </span>
39+
<span className=" font-semibold">{index+1}:</span>
4040
<span>{person.display_name}</span>
4141
</li>
4242
))}

0 commit comments

Comments
 (0)