import { createFileRoute, useNavigate } from "@tanstack/react-router"
import { LayoutMode, useBookmarkPageStore } from "./-store"
import clsx from "clsx"
import { fetchApi, useAuthenticatedQuery } from "~/api"
import { LoadingSpinner } from "~/components/loading-spinner"
import { BookmarkList } from "./-bookmark-list"
import { useCallback } from "react"
import type { LinkBookmark } from "@markone/core/bookmark"
import { ActionBar } from "./-action-bar"
export const Route = createFileRoute("/bookmarks/$bookmarkId")({
component: RouteComponent,
})
function RouteComponent() {
return (
)
}
function Main({ children }: React.PropsWithChildren) {
const layoutMode = useBookmarkPageStore((state) => state.layoutMode)
return (
{children}
)
}
function BookmarkPreviewContainer({ children }: React.PropsWithChildren) {
const layoutMode = useBookmarkPageStore((state) => state.layoutMode)
return (
{children}
)
}
function BookmarkListSidebar() {
return (
)
}
function BookmarkListContainer() {
const { bookmarkId } = Route.useParams()
const navigate = useNavigate()
const { data: bookmarks, status } = useAuthenticatedQuery(["bookmarks"], () =>
fetchApi("/bookmarks").then((res) => res.json()),
)
const handleBookmarkListItemAction = useBookmarkPageStore((state) => state.handleBookmarkListItemAction)
const onSelectedBookmarkChange = useCallback(
(bookmark: LinkBookmark) => {
navigate({ to: `/bookmarks/${bookmark.id}` })
},
[navigate],
)
switch (status) {
case "success":
return (
)
case "pending":
return (
Loading
)
case "error":
return error loading bookmarks
}
}
function BookmarkPreview() {
const { bookmarkId } = Route.useParams()
const { data, status } = useAuthenticatedQuery(["bookmarks", `${bookmarkId}.html`], () =>
fetchApi(`/bookmark/${bookmarkId}`, {
headers: {
Accept: "text/html",
},
}).then((res) => res.text()),
)
switch (status) {
case "pending":
return (
Loading
)
case "success":
return
default:
return null
}
}