import { useEffect } from "react"; import { useFlatasticStore } from "@/store/flatastic"; import type { FlatasticChore, FlatasticUser } from "@/types/flatasticChore"; import style from "./style.module.css"; export default function Flatastic() { const fetchFlatasticData = useFlatasticStore((state) => state.fetch); const flatasticData = useFlatasticStore((state) => state.flatasticData); const chores = (flatasticData?.chores as FlatasticChore[]) || []; chores.sort( (a, b) => a.timeLeftNext - b.timeLeftNext && b.rotationTime - a.rotationTime, ); const users = flatasticData?.users; const idToNameMap: Record = {}; users.forEach((user: FlatasticUser) => { idToNameMap[user.id] = user.firstName; }); useEffect(() => { fetchFlatasticData(); const interval = setInterval(() => { fetchFlatasticData(); }, 60000); return () => clearInterval(interval); }, [fetchFlatasticData]); const choresRender = chores.map((chore) => { let className = ""; let timeLeftInDays = null; if (chore.rotationTime === -1) { className = "irregular"; } else { className = chore.timeLeftNext <= 0 ? "due" : "notDue"; timeLeftInDays = ( {Math.abs(Math.floor(chore.timeLeftNext / (60 * 60 * 24)))}d ); } return (
  • {`${idToNameMap[chore.currentUser]}`} : {chore.title} {timeLeftInDays} {"🪙".repeat(chore.points)}
  • ); }); return (

    Chores

    ); }