mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +01:00 
			
		
		
		
	Cleanup overlay state with types and use overlay for severity (#10299)
This commit is contained in:
		
							parent
							
								
									3d90f50d84
								
							
						
					
					
						commit
						ccb5e05e3e
					
				@ -1,15 +1,16 @@
 | 
			
		||||
import { useCallback, useMemo } from "react";
 | 
			
		||||
import { useLocation, useNavigate } from "react-router-dom";
 | 
			
		||||
 | 
			
		||||
export default function useOverlayState(
 | 
			
		||||
export default function useOverlayState<S extends string>(
 | 
			
		||||
  key: string,
 | 
			
		||||
): [string | undefined, (value: string, replace?: boolean) => void] {
 | 
			
		||||
  defaultValue: S | undefined = undefined,
 | 
			
		||||
): [S | undefined, (value: S, replace?: boolean) => void] {
 | 
			
		||||
  const location = useLocation();
 | 
			
		||||
  const navigate = useNavigate();
 | 
			
		||||
  const currentLocationState = location.state;
 | 
			
		||||
 | 
			
		||||
  const setOverlayStateValue = useCallback(
 | 
			
		||||
    (value: string, replace: boolean = false) => {
 | 
			
		||||
    (value: S, replace: boolean = false) => {
 | 
			
		||||
      const newLocationState = { ...currentLocationState };
 | 
			
		||||
      newLocationState[key] = value;
 | 
			
		||||
      navigate(location.pathname, { state: newLocationState, replace });
 | 
			
		||||
@ -19,10 +20,10 @@ export default function useOverlayState(
 | 
			
		||||
    [key, navigate],
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  const overlayStateValue = useMemo<string | undefined>(
 | 
			
		||||
  const overlayStateValue = useMemo<S | undefined>(
 | 
			
		||||
    () => location.state && location.state[key],
 | 
			
		||||
    [location, key],
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  return [overlayStateValue, setOverlayStateValue];
 | 
			
		||||
  return [overlayStateValue ?? defaultValue, setOverlayStateValue];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -29,7 +29,10 @@ export default function Events() {
 | 
			
		||||
 | 
			
		||||
  // recordings viewer
 | 
			
		||||
 | 
			
		||||
  const [severity, setSeverity] = useState<ReviewSeverity>("alert");
 | 
			
		||||
  const [severity, setSeverity] = useOverlayState<ReviewSeverity>(
 | 
			
		||||
    "severity",
 | 
			
		||||
    "alert",
 | 
			
		||||
  );
 | 
			
		||||
  const [selectedReviewId, setSelectedReviewId] = useOverlayState("review");
 | 
			
		||||
 | 
			
		||||
  // review filter
 | 
			
		||||
@ -339,7 +342,7 @@ export default function Events() {
 | 
			
		||||
        reachedEnd={isDone}
 | 
			
		||||
        isValidating={isValidating}
 | 
			
		||||
        filter={reviewFilter}
 | 
			
		||||
        severity={severity}
 | 
			
		||||
        severity={severity ?? "alert"}
 | 
			
		||||
        setSeverity={setSeverity}
 | 
			
		||||
        loadNextPage={onLoadNextPage}
 | 
			
		||||
        markItemAsReviewed={markItemAsReviewed}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user