in src/hooks/useMessages.ts [31:65]
export default function useMessages(initialState: MessageWithoutId[] = []) {
const initialMsgs: Messages = useMemo(() => initialState.map((t) => makeMsg(t)), [initialState]);
const [messages, setMessages] = useState(initialMsgs);
const prependMsgs = useCallback((msgs: Messages) => {
setMessages((prev: Messages) => [...msgs, ...prev]);
}, []);
const updateMsg = useCallback((id: MessageId, msg: MessageWithoutId) => {
setMessages((prev) => prev.map((t) => (t._id === id ? makeMsg(msg, id) : t)));
}, []);
const appendMsg = useCallback((msg: MessageWithoutId) => {
const newMsg = makeMsg(msg);
setMessages((prev) => [...prev, newMsg]);
return newMsg._id;
}, []);
const deleteMsg = useCallback((id: MessageId) => {
setMessages((prev) => prev.filter((t) => t._id !== id));
}, []);
const resetList = useCallback((list = []) => {
setMessages(list);
}, []);
return {
messages,
prependMsgs,
appendMsg,
updateMsg,
deleteMsg,
resetList,
};
}