From d02114a79dd20114d1c06979cfceb649ac1b972e Mon Sep 17 00:00:00 2001
From: Yuval Adam <_@yuv.al>
Date: Mon, 23 Sep 2024 13:09:39 +0200
Subject: Cleanup lots of typescript and ref issues
---
app/components/Geshem.tsx | 54 ++++++++++++++++++++++-------------------------
1 file changed, 25 insertions(+), 29 deletions(-)
(limited to 'app/components/Geshem.tsx')
diff --git a/app/components/Geshem.tsx b/app/components/Geshem.tsx
index 50659be..05ad308 100644
--- a/app/components/Geshem.tsx
+++ b/app/components/Geshem.tsx
@@ -8,32 +8,12 @@ import { Slider } from "./Slider";
import { DateTime } from "./Datetime";
import { IMAGES_BASE_URL, PLAYBACK_HOURS, PLAYBACK_SLOTS } from "./config";
-// import "./Geshem.css";
import "rc-slider/assets/index.css";
-// export function App() {
-// return (
-//
-//
-// } />
-// } />
-//
-//
-// );
-// }
-
-interface GeshemProps {
- date?: string
-}
-
-export function Geshem({ date }: GeshemProps) {
+export function Geshem() {
const [images, setImages] = useState([]);
- const [playback] = useState(
- date ||
- new URL(window.location.toString()).searchParams.get("history") ||
- undefined
- );
- const [slider, setSlider] = useState(playback ? PLAYBACK_SLOTS : 9);
+ const [fragment, setFragment] = useState(undefined);
+ const [slider, setSlider] = useState(fragment ? PLAYBACK_SLOTS : 9);
useEffect(() => {
const fetchImages = async () =>
@@ -43,7 +23,7 @@ export function Geshem({ date }: GeshemProps) {
.then(setImages);
const buildPlayback = async () => {
- const date = playback;
+ const date = fragment;
const hours = Array.from(Array(PLAYBACK_HOURS).keys()).map(
h => `${String(h).padStart(2, "0")}`
);
@@ -58,23 +38,39 @@ export function Geshem({ date }: GeshemProps) {
setImages(paths);
};
- let timer: number;
- if (playback) buildPlayback();
+ let timer: any;
+ if (fragment) buildPlayback();
else {
fetchImages();
- timer = window.setInterval(fetchImages, 60 * 1000);
+ timer = setInterval(fetchImages, 60 * 1000);
}
return () => {
if (timer !== undefined) clearInterval(timer);
};
- }, [playback]);
+ }, [fragment]);
+
+ useEffect(() => {
+ const fragment = window.location.hash.slice(1);
+ setFragment(fragment);
+
+ const handleHashChange = () => {
+ const newFragment = window.location.hash.slice(1);
+ setFragment(newFragment);
+ };
+
+ window.addEventListener('hashchange', handleHashChange);
+
+ return () => {
+ window.removeEventListener('hashchange', handleHashChange);
+ };
+ }, []);
return (
<>
-
+
>
);
}
--
cgit v1.3.1