Use context menu for mark as reviewed

This commit is contained in:
Nicolas Mowen 2024-02-29 13:02:47 -07:00
parent 786afb776e
commit 9e613ef2b8
2 changed files with 26 additions and 27 deletions

View File

@ -22,7 +22,7 @@ import {
ContextMenuSeparator, ContextMenuSeparator,
ContextMenuTrigger, ContextMenuTrigger,
} from "../ui/context-menu"; } from "../ui/context-menu";
import { LuCheckSquare, LuFileUp, LuTrash } from "react-icons/lu"; import { LuCheckCheck, LuCheckSquare, LuFileUp, LuTrash } from "react-icons/lu";
import { RiCheckboxMultipleLine } from "react-icons/ri"; import { RiCheckboxMultipleLine } from "react-icons/ri";
import axios from "axios"; import axios from "axios";
import { useFormattedTimestamp } from "@/hooks/use-date-utils"; import { useFormattedTimestamp } from "@/hooks/use-date-utils";
@ -33,9 +33,9 @@ import { useSwipeable } from "react-swipeable";
type PreviewPlayerProps = { type PreviewPlayerProps = {
review: ReviewSegment; review: ReviewSegment;
allPreviews?: Preview[]; allPreviews?: Preview[];
autoPlayback?: boolean;
setReviewed?: (reviewId: string) => void;
onTimeUpdate?: (time: number | undefined) => void; onTimeUpdate?: (time: number | undefined) => void;
setReviewed: (reviewId: string) => void;
markAboveReviewed: () => void;
onClick: (reviewId: string, ctrl: boolean) => void; onClick: (reviewId: string, ctrl: boolean) => void;
}; };
@ -51,6 +51,7 @@ export default function PreviewThumbnailPlayer({
review, review,
allPreviews, allPreviews,
setReviewed, setReviewed,
markAboveReviewed,
onClick, onClick,
onTimeUpdate, onTimeUpdate,
}: PreviewPlayerProps) { }: PreviewPlayerProps) {
@ -79,11 +80,10 @@ export default function PreviewThumbnailPlayer({
preventScrollOnSwipe: true, preventScrollOnSwipe: true,
}); });
const handleSetReviewed = useCallback(() => { const handleSetReviewed = useCallback(
if (setReviewed) { () => setReviewed(review.id),
setReviewed(review.id); [review, setReviewed],
} );
}, [review, setReviewed]);
// playback // playback
@ -211,6 +211,7 @@ export default function PreviewThumbnailPlayer({
review={review} review={review}
onSelect={() => onClick(review.id, true)} onSelect={() => onClick(review.id, true)}
setReviewed={handleSetReviewed} setReviewed={handleSetReviewed}
markAboveReviewed={markAboveReviewed}
/> />
</ContextMenu> </ContextMenu>
); );
@ -583,12 +584,14 @@ function InProgressPreview({
type PreviewContextItemsProps = { type PreviewContextItemsProps = {
review: ReviewSegment; review: ReviewSegment;
onSelect: () => void; onSelect: () => void;
setReviewed?: () => void; setReviewed: () => void;
markAboveReviewed: () => void;
}; };
function PreviewContextItems({ function PreviewContextItems({
review, review,
onSelect, onSelect,
setReviewed, setReviewed,
markAboveReviewed,
}: PreviewContextItemsProps) { }: PreviewContextItemsProps) {
const exportReview = useCallback(() => { const exportReview = useCallback(() => {
axios.post( axios.post(
@ -604,16 +607,20 @@ function PreviewContextItems({
return ( return (
<ContextMenuContent> <ContextMenuContent>
{isMobile && ( {isMobile && (
<>
<ContextMenuItem onSelect={onSelect}> <ContextMenuItem onSelect={onSelect}>
<div className="w-full flex justify-between items-center"> <div className="w-full flex justify-between items-center">
Select Select
<RiCheckboxMultipleLine className="ml-4 size-4" /> <RiCheckboxMultipleLine className="ml-4 size-4" />
</div> </div>
</ContextMenuItem> </ContextMenuItem>
<ContextMenuSeparator />
</>
)} )}
<ContextMenuItem onSelect={markAboveReviewed}>
<div className="w-full flex justify-between items-center">
Mark Above as Reviewed
<LuCheckCheck className="ml-4 size-4" />
</div>
</ContextMenuItem>
<ContextMenuSeparator />
{!review.has_been_reviewed && ( {!review.has_been_reviewed && (
<ContextMenuItem onSelect={() => (setReviewed ? setReviewed() : null)}> <ContextMenuItem onSelect={() => (setReviewed ? setReviewed() : null)}>
<div className="w-full flex justify-between items-center"> <div className="w-full flex justify-between items-center">

View File

@ -301,15 +301,6 @@ export default function EventView({
)} )}
</div> </div>
{selectedReviews.length > 0 && (
<Button
className="absolute right-14 md:right-28 bottom-2 z-50"
onClick={markScrolledItemsAsReviewed}
>
Mark Above Items As Reviewed
</Button>
)}
<div className="flex h-full overflow-hidden"> <div className="flex h-full overflow-hidden">
<div <div
ref={contentRef} ref={contentRef}
@ -357,6 +348,7 @@ export default function EventView({
allPreviews={relevantPreviews} allPreviews={relevantPreviews}
setReviewed={markItemAsReviewed} setReviewed={markItemAsReviewed}
onTimeUpdate={setPreviewTime} onTimeUpdate={setPreviewTime}
markAboveReviewed={markScrolledItemsAsReviewed}
onClick={onSelectReview} onClick={onSelectReview}
/> />
</div> </div>