Download src/hooks/useSocket.js from SyedFouzan/taskflow-titan-workflow-wizardry: direct link, hf CLI and curl.
- Browser
- Download file 1.22 kB
-
https://huggingface.co/spaces/SyedFouzan/taskflow-titan-workflow-wizardry/resolve/main/src/hooks/useSocket.js
- Command line
-
hf download hf://spaces/SyedFouzan/taskflow-titan-workflow-wizardry/src/hooks/useSocket.js
-
curl -L -o useSocket.js https://huggingface.co/spaces/SyedFouzan/taskflow-titan-workflow-wizardry/resolve/main/src/hooks/useSocket.js
1.22 kB
| import { useEffect } from 'react'; | |
| import { useSocket } from '../context/SocketContext'; | |
| import toast from 'react-hot-toast'; | |
| export const useSocketEvent = (event, handler) => { | |
| const { socket } = useSocket(); | |
| useEffect(() => { | |
| if (socket) { | |
| socket.on(event, handler); | |
| return () => { | |
| socket.off(event, handler); | |
| }; | |
| } | |
| }, [socket, event, handler]); | |
| }; | |
| export const useTaskNotifications = () => { | |
| const { socket } = useSocket(); | |
| useEffect(() => { | |
| if (socket) { | |
| const handleTaskUpdate = (data) => { | |
| toast.success(`Task "${data.title}" has been updated`); | |
| }; | |
| const handleNewTask = (data) => { | |
| toast.success(`New task "${data.title}" assigned to you`); | |
| }; | |
| const handleTaskComment = (data) => { | |
| toast(`${data.user} commented on "${data.taskTitle}"`); | |
| }; | |
| socket.on('task:update', handleTaskUpdate); | |
| socket.on('task:new', handleNewTask); | |
| socket.on('task:comment', handleTaskComment); | |
| return () => { | |
| socket.off('task:update', handleTaskUpdate); | |
| socket.off('task:new', handleNewTask); | |
| socket.off('task:comment', handleTaskComment); | |
| }; | |
| } | |
| }, [socket]); | |
| }; |