You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.3 KiB
45 lines
1.3 KiB
import { useAutoAnimate } from "@formkit/auto-animate/react"; |
|
import { useState } from "react"; |
|
import { useTranslation } from "react-i18next"; |
|
|
|
import { |
|
getIfBookmarkedFromPortable, |
|
useBookmarkContext, |
|
} from "@/state/bookmark"; |
|
import { useWatchedContext } from "@/state/watched"; |
|
|
|
function Watched() { |
|
const { t } = useTranslation(); |
|
const { getFilteredBookmarks } = useBookmarkContext(); |
|
const { getFilteredWatched, removeProgress } = useWatchedContext(); |
|
const [editing, setEditing] = useState(false); |
|
const [gridRef] = useAutoAnimate<HTMLDivElement>(); |
|
|
|
const bookmarks = getFilteredBookmarks(); |
|
const watchedItems = getFilteredWatched().filter( |
|
(v) => !getIfBookmarkedFromPortable(bookmarks, v.item.meta) |
|
); |
|
|
|
if (watchedItems.length === 0) return null; |
|
|
|
return ( |
|
<div> |
|
<SectionHeading |
|
title={t("search.continueWatching") || "Continue Watching"} |
|
icon={Icons.CLOCK} |
|
> |
|
<EditButton editing={editing} onEdit={setEditing} /> |
|
</SectionHeading> |
|
<MediaGrid ref={gridRef}> |
|
{watchedItems.map((v) => ( |
|
<WatchedMediaCard |
|
key={v.item.meta.id} |
|
media={v.item.meta} |
|
closable={editing} |
|
onClose={() => removeProgress(v.item.meta.id)} |
|
/> |
|
))} |
|
</MediaGrid> |
|
</div> |
|
); |
|
}
|
|
|