import { createEffect, createMemo, createSignal, FlowComponent, onCleanup, useContext, } from "solid-js"; import { UiStoreContext } from "~/stores"; import { de } from "date-fns/locale"; import { formatDistanceToNow, fromUnixTime, getUnixTime } from "date-fns"; const Page: FlowComponent = (props) => { const [uiState] = useContext(UiStoreContext)!; const [now, setNow] = createSignal(new Date()); createEffect(function () { const interval = setInterval(function () { setNow(new Date()); }, 10000); onCleanup(() => clearInterval(interval)); }); const lastSavedWords = createMemo(function () { now(); let words = "Nie"; if (uiState.lastSaved > 0) { words = formatDistanceToNow(fromUnixTime(uiState.lastSaved), { includeSeconds: true, addSuffix: true, locale: de, }); } return words; }); const savedDistance = createMemo(function () { now(); if (uiState.lastSaved === 0) { return -1; } const nowUnix = getUnixTime(new Date()); const distance = nowUnix - uiState.lastSaved; return distance; }); return (
Zuletzt gespeichert:{" "} = 0 && savedDistance() < 60, "text-lime-800 text-opacity-50": savedDistance() >= 60 && savedDistance() < 120, "text-yellow-700 text-opacity-60": savedDistance() >= 120 && savedDistance() < 180, "text-orange-700 text-opacity-70": savedDistance() >= 180 && savedDistance() < 300, "text-red-700 text-opacity-75": savedDistance() >= 300, "font-bold": savedDistance() >= 600, }} > {lastSavedWords()}
{props.children}
); }; export default Page;