Spaces:
Paused
Paused
File size: 1,550 Bytes
a0fda44 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import { useEffect } from "react";
import { useState } from "react";
import { useDispatch, useSelector } from "react-redux";
import useFetch from "../hooks/useFetch";
import { chatListActions } from "../store/chatListSlice";
const useChatList = () => {
const chatList = useSelector((state) => state.chatListReducer);
const userId = useSelector((state) => state.userReducer.user._id);
const [searchValue, setSearchValue] = useState("");
const [searchedChats, setSearchedChats] = useState([]);
const dispatch = useDispatch();
const { reqFn: fetchChatRoomSummary, reqState: loadingChatList } = useFetch(
{ method: "GET", url: "/chatRoom/summary" },
(data) =>
dispatch(
chatListActions.setChatList({ chatList: data.data.chatRoomSummary })
)
);
const handleSearchValue = (event) => {
setSearchValue(event.target.value);
};
useEffect(() => {
if (searchValue) {
setSearchedChats(
chatList.filter(
(chat) =>
chat.profile.name
?.toLowerCase()
.startsWith(searchValue.toLowerCase()) ||
chat.profile.username
.toLowerCase()
.startsWith(searchValue.toLowerCase())
)
);
} else {
setSearchedChats(chatList);
}
}, [searchValue, chatList]);
useEffect(() => {
if (userId) {
fetchChatRoomSummary();
}
}, [userId]);
return {
chatList: searchedChats,
searchValue,
handleSearchValue,
loadingChatList,
};
};
export default useChatList;
|