import { Component, onCleanup, createSignal, Show, untrack, Match, Switch as JsSwitch, ErrorBoundary, } from "solid-js"; import { type mastodon } from "masto"; import { Button, LinearProgress } from "@suid/material"; import { createTimeline } from "../masto/timelines"; import PullDownToRefresh from "./PullDownToRefresh"; import TootComposer from "./TootComposer"; import TootList from "./TootList"; const TimelinePanel: Component<{ client: mastodon.rest.Client; name: "home" | "public"; prefetch?: boolean; }> = (props) => { const [scrollLinked, setScrollLinked] = createSignal(); const [timeline, snapshot, { refetch: refetchTimeline }] = createTimeline( () => props.client.v1.timelines[props.name], () => ({ limit: 20 }), ); const tlEndObserver = new IntersectionObserver(() => { if (untrack(() => props.prefetch) && !snapshot.loading) refetchTimeline("prev"); }); onCleanup(() => tlEndObserver.disconnect()); return ( { return

Oops: {String(err)}

; }} > refetchTimeline("next")} />
setTimeout(() => { setScrollLinked(e.parentElement!); }, 0) } > refetchTimeline("prev")} />
tlEndObserver.observe(e)}>
); }; export default TimelinePanel;