mirror of
https://github.com/JustAnimeCore/JustAnime.git
synced 2026-04-17 22:01:45 +00:00
freshhhh
This commit is contained in:
@@ -1,64 +0,0 @@
|
||||
import { useState, useEffect, useRef, useCallback } from "react";
|
||||
import { useLocation } from "react-router-dom";
|
||||
import { useSearchContext } from "@/src/context/SearchContext";
|
||||
|
||||
const useSearch = () => {
|
||||
const { isSearchVisible, setIsSearchVisible } = useSearchContext();
|
||||
const [searchValue, setSearchValue] = useState("");
|
||||
const [isFocused, setIsFocused] = useState(false);
|
||||
const [debouncedValue, setDebouncedValue] = useState("");
|
||||
const suggestionRefs = useRef([]);
|
||||
const location = useLocation();
|
||||
|
||||
useEffect(() => {
|
||||
const timer = setTimeout(() => {
|
||||
setDebouncedValue(searchValue);
|
||||
}, 500);
|
||||
return () => {
|
||||
clearTimeout(timer);
|
||||
};
|
||||
}, [searchValue]);
|
||||
|
||||
useEffect(() => {
|
||||
setIsSearchVisible(false);
|
||||
setSearchValue("");
|
||||
setDebouncedValue("");
|
||||
// setIsFocused(false);
|
||||
}, [location, setIsSearchVisible]);
|
||||
|
||||
useEffect(() => {
|
||||
const handleClickOutside = (event) => {
|
||||
const isInsideSuggestionBox = suggestionRefs.current.some(
|
||||
(ref) => ref && ref.contains(event.target)
|
||||
);
|
||||
const isInsideInput = document.activeElement === event.target;
|
||||
if (!isInsideSuggestionBox && !isInsideInput) {
|
||||
setIsFocused(false);
|
||||
}
|
||||
};
|
||||
|
||||
document.addEventListener("mousedown", handleClickOutside);
|
||||
return () => {
|
||||
document.removeEventListener("mousedown", handleClickOutside);
|
||||
};
|
||||
}, []);
|
||||
const addSuggestionRef = useCallback((ref) => {
|
||||
if (ref && !suggestionRefs.current.includes(ref)) {
|
||||
suggestionRefs.current.push(ref);
|
||||
}
|
||||
}, []);
|
||||
|
||||
return {
|
||||
isSearchVisible,
|
||||
setIsSearchVisible,
|
||||
searchValue,
|
||||
setSearchValue,
|
||||
isFocused,
|
||||
setIsFocused,
|
||||
debouncedValue,
|
||||
suggestionRefs,
|
||||
addSuggestionRef,
|
||||
};
|
||||
};
|
||||
|
||||
export default useSearch;
|
||||
Reference in New Issue
Block a user