mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +01:00 
			
		
		
		
	Add button to mark review item as reviewed in filmstrip (#12878)
* Add button to mark review item as reviewd in filmstrip * Add tooltip
This commit is contained in:
		
							parent
							
								
									b01ce31903
								
							
						
					
					
						commit
						4ecc0e15ce
					
				@ -12,17 +12,21 @@ import { isCurrentHour } from "@/utils/dateUtil";
 | 
			
		||||
import { useCameraPreviews } from "@/hooks/use-camera-previews";
 | 
			
		||||
import { baseUrl } from "@/api/baseUrl";
 | 
			
		||||
import { useApiHost } from "@/api";
 | 
			
		||||
import { isSafari } from "react-device-detect";
 | 
			
		||||
import { isDesktop, isSafari } from "react-device-detect";
 | 
			
		||||
import { usePersistence } from "@/hooks/use-persistence";
 | 
			
		||||
import { Skeleton } from "../ui/skeleton";
 | 
			
		||||
import { Button } from "../ui/button";
 | 
			
		||||
import { FaCircleCheck } from "react-icons/fa6";
 | 
			
		||||
 | 
			
		||||
type AnimatedEventCardProps = {
 | 
			
		||||
  event: ReviewSegment;
 | 
			
		||||
  selectedGroup?: string;
 | 
			
		||||
  updateEvents: () => void;
 | 
			
		||||
};
 | 
			
		||||
export function AnimatedEventCard({
 | 
			
		||||
  event,
 | 
			
		||||
  selectedGroup,
 | 
			
		||||
  updateEvents,
 | 
			
		||||
}: AnimatedEventCardProps) {
 | 
			
		||||
  const { data: config } = useSWR<FrigateConfig>("config");
 | 
			
		||||
  const apiHost = useApiHost();
 | 
			
		||||
@ -59,6 +63,7 @@ export function AnimatedEventCard({
 | 
			
		||||
  }, [visibilityListener]);
 | 
			
		||||
 | 
			
		||||
  const [isLoaded, setIsLoaded] = useState(false);
 | 
			
		||||
  const [isHovered, setIsHovered] = useState(false);
 | 
			
		||||
 | 
			
		||||
  // interaction
 | 
			
		||||
 | 
			
		||||
@ -102,7 +107,26 @@ export function AnimatedEventCard({
 | 
			
		||||
          style={{
 | 
			
		||||
            aspectRatio: aspectRatio,
 | 
			
		||||
          }}
 | 
			
		||||
          onMouseEnter={isDesktop ? () => setIsHovered(true) : undefined}
 | 
			
		||||
          onMouseLeave={isDesktop ? () => setIsHovered(false) : undefined}
 | 
			
		||||
        >
 | 
			
		||||
          {isHovered && (
 | 
			
		||||
            <Tooltip>
 | 
			
		||||
              <TooltipTrigger asChild>
 | 
			
		||||
                <Button
 | 
			
		||||
                  className="absolute right-2 top-1 z-40 bg-gray-500 bg-gradient-to-br from-gray-400 to-gray-500"
 | 
			
		||||
                  size="xs"
 | 
			
		||||
                  onClick={async () => {
 | 
			
		||||
                    await axios.post(`reviews/viewed`, { ids: [event.id] });
 | 
			
		||||
                    updateEvents();
 | 
			
		||||
                  }}
 | 
			
		||||
                >
 | 
			
		||||
                  <FaCircleCheck className="size-3 text-white" />
 | 
			
		||||
                </Button>
 | 
			
		||||
              </TooltipTrigger>
 | 
			
		||||
              <TooltipContent>Mark as Reviewed</TooltipContent>
 | 
			
		||||
            </Tooltip>
 | 
			
		||||
          )}
 | 
			
		||||
          <div
 | 
			
		||||
            className="size-full cursor-pointer overflow-hidden rounded md:rounded-lg"
 | 
			
		||||
            onClick={onOpenReview}
 | 
			
		||||
 | 
			
		||||
@ -315,6 +315,7 @@ export default function LiveDashboardView({
 | 
			
		||||
                    key={event.id}
 | 
			
		||||
                    event={event}
 | 
			
		||||
                    selectedGroup={cameraGroup}
 | 
			
		||||
                    updateEvents={updateEvents}
 | 
			
		||||
                  />
 | 
			
		||||
                );
 | 
			
		||||
              })}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user