Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.
import { useState, useEffect, useCallback } from 'react'
/**
* Manages image loading/error state and lightbox open/close.
* Resets when recordId changes.
*/
export const useImageLoadingState = (recordId) => {
const [imageLoading, setImageLoading] = useState(true)
const [imageError, setImageError] = useState(false)
const [isLightboxOpen, setLightboxOpen] = useState(false)
useEffect(() => {
setImageLoading(true)
setImageError(false)
}, [recordId])
const handleImageLoad = useCallback(() => {
setImageLoading(false)
}, [])
const handleImageError = useCallback(() => {
setImageError(true)
const handleOpenLightbox = useCallback(() => {
if (!imageError) {
setLightboxOpen(true)
}
}, [imageError])
const handleCloseLightbox = useCallback(() => setLightboxOpen(false), [])
return {
imageLoading,
imageError,
isLightboxOpen,
handleImageLoad,
handleImageError,
handleOpenLightbox,
handleCloseLightbox,