From 6983d0df9610b4de231d91a91036573095635d0a Mon Sep 17 00:00:00 2001 From: Kakabay <2kakabayashyrberdyew@gmail.com> Date: Tue, 10 Sep 2024 17:35:21 +0500 Subject: [PATCH] quiz temporarely backed up --- app/(main)/quiz/[quiz_id]/page.tsx | 5 +- app/(main)/quiz/active/page.tsx | 3 +- components/quiz/QuizQuestionList.tsx | 134 ++++++++++----------------- components/quiz/QuizWinnerTable.tsx | 131 +++++++++++++------------- 4 files changed, 119 insertions(+), 154 deletions(-) diff --git a/app/(main)/quiz/[quiz_id]/page.tsx b/app/(main)/quiz/[quiz_id]/page.tsx index 7f825c5..bdd8f80 100644 --- a/app/(main)/quiz/[quiz_id]/page.tsx +++ b/app/(main)/quiz/[quiz_id]/page.tsx @@ -125,15 +125,14 @@ const page = ({ params }: IParams) => {
{data?.data ? ( ) : null} - {data?.data.id && ( + {data?.data.id && quizFinished && ( {
{data?.data ? ( { {/* {data?.data.id && quizFinished ? ( ) : null} */} - {data?.data.id && ( + {data?.data.id && quizFinished && ( ; quizFinished: boolean; initialQuestionsData: IQuizQuestions; - id: string; - dynamic?: boolean; + paramsId?: string; } const QuizQuestionList = ({ setQuizFinished, quizFinished, initialQuestionsData, - id, - dynamic, + paramsId, }: IProps) => { const [data, setData] = useState(initialQuestionsData); const { quizSearchData } = useContext(QuizContext).quizSearchContext; const { setQuestionsData } = useContext(QuizContext).quizQuestionsContext; - const [smsNumber, setSmsNumber] = useState(); - const [socket, setSocket] = useState(null); - const [isConnected, setIsConnected] = useState(false); - - // useEffect(() => { - // Queries.getQuizQuestions().then((res) => setData(res)); - // data?.data.questions.map((question) => - // question.status === 'active' ? setQuizFinished(false) : setQuizFinished(true), - // ); - - // if (quizFinished === true) { - // const interval = setInterval(() => { - // Queries.getQuizQuestions().then((res) => { - // setData(res); - // }); - // data?.data.questions.map((question) => - // question.status === 'active' ? setQuizFinished(false) : setQuizFinished(true), - // ); - // }, 15000); - // return () => clearInterval(interval); - // } - // }, []); - useEffect(() => { // Queries.getQuizQuestions().then((res) => setData(res)); @@ -59,79 +34,72 @@ const QuizQuestionList = ({ // : setQuizFinished(true), // ); - if (!dynamic && quizFinished === false) { - // const interval = setInterval(() => { - // Queries.getQuizQuestions().then((res) => { - // setData(res); - // setQuestionsData(res.data.questions); + console.log('quizFinished', quizFinished); - // res.data.questions.map((question) => - // question.status === 'active' || question.status === 'new' - // ? setQuizFinished(false) - // : setQuizFinished(true), - // ); - // }); + if (paramsId && !quizFinished) { + const interval = setInterval(() => { + Queries.getQuiz(paramsId).then((res) => { + setData(res); + setQuestionsData(res.data.questions); - // // const isActive = data?.data.questions.some( - // // (question) => question.status === 'active' || question.status === 'new', - // // ); + res.data.questions.map((question) => + question.status === 'active' || question.status === 'new' + ? setQuizFinished(false) + : setQuizFinished(true), + ); + }); + }, 60000); + return () => clearInterval(interval); + } - // // data.data.questions.map((question) => - // // question.status === 'active' || question.status === 'new' - // // ? setQuizFinished(false) - // // : setQuizFinished(true), - // // ); - // }, 60000); - // return () => clearInterval(interval); - Queries.getQuizQuestions().then((res) => { - setData(res); - setQuestionsData(res.data.questions); - setSmsNumber(res.data.sms_number); + if (!paramsId && !quizFinished) { + const interval = setInterval(() => { + Queries.getQuizQuestions().then((res) => { + setData(res); + setQuestionsData(res.data.questions); - res.data.questions.map((question) => - question.status === 'active' || question.status === 'new' - ? setQuizFinished(false) - : setQuizFinished(true), - ); - }); - } else { - // const interval = setInterval(() => { - // Queries.getQuiz(id).then((res) => { - // setData(res); - // setQuestionsData(res.data.questions); + res.data.questions.map((question) => + question.status === 'active' || question.status === 'new' + ? setQuizFinished(false) + : setQuizFinished(true), + ); + }); - // res.data.questions.map((question) => - // question.status === 'active' || question.status === 'new' - // ? setQuizFinished(false) - // : setQuizFinished(true), - // ); - // }); - // }, 60000); - // return () => clearInterval(interval); + // const isActive = data?.data.questions.some( + // (question) => question.status === 'active' || question.status === 'new', + // ); - Queries.getQuiz(id).then((res) => { - setData(res); - setQuestionsData(res.data.questions); - setSmsNumber(res.data.sms_number); + // data.data.questions.map((question) => + // question.status === 'active' || question.status === 'new' + // ? setQuizFinished(false) + // : setQuizFinished(true), + // ); + }, 60000); + return () => clearInterval(interval); - res.data.questions.map((question) => - question.status === 'active' || question.status === 'new' - ? setQuizFinished(false) - : setQuizFinished(true), - ); - }); + // Queries.getQuizQuestions().then((res) => { + // setData(res); + // setQuestionsData(res.data.questions); + // setSmsNumber(res.data.sms_number); + + // res.data.questions.map((question) => + // question.status === 'active' || question.status === 'new' + // ? setQuizFinished(false) + // : setQuizFinished(true), + // ); + // }); } }, [quizFinished]); return (
{data && !quizSearchData ? ( - data.data.questions.map((question, id) => + data.data.questions.map((question, paramsId) => question.status !== 'new' ? ( { useEffect(() => { Queries.getQuizWinners(quizId).then((res) => { setWinnersData(res); - console.log(res); }); }, [quizId]); - useEffect(() => { - let socket: WebSocket | null = null; - let reconnectTimeout: NodeJS.Timeout | null = null; - let pingInterval: NodeJS.Timeout | null = null; + // useEffect(() => { + // let socket: WebSocket | null = null; + // let reconnectTimeout: NodeJS.Timeout | null = null; + // let pingInterval: NodeJS.Timeout | null = null; - const connectWebSocket = () => { - try { - socket = new WebSocket(`wss://sms.turkmentv.gov.tm/ws/quiz?dst=${smsNumber}`); - setSocket(socket); + // const connectWebSocket = () => { + // try { + // socket = new WebSocket(`wss://sms.turkmentv.gov.tm/ws/quiz?dst=${smsNumber}`); + // setSocket(socket); - socket.onopen = () => { - console.log('WebSocket is connected'); - setIsConnected(true); + // socket.onopen = () => { + // console.log('WebSocket is connected'); + // setIsConnected(true); - pingInterval = setInterval(() => { - if (socket?.readyState === WebSocket.OPEN) { - try { - socket.send(JSON.stringify({ type: 'ping' })); - } catch (error) { - console.error('Error sending ping:', error); - } - } - }, 25000); // Ping every 25 seconds - }; + // pingInterval = setInterval(() => { + // if (socket?.readyState === WebSocket.OPEN) { + // try { + // socket.send(JSON.stringify({ type: 'ping' })); + // } catch (error) { + // console.error('Error sending ping:', error); + // } + // } + // }, 25000); // Ping every 25 seconds + // }; - socket.onmessage = (event) => { - try { - console.log('Message received from WebSocket:', event.data); - const message = JSON.parse(event.data); - handleOnMessage(message); - } catch (error) { - console.error('Error processing message:', error); - } - }; + // socket.onmessage = (event) => { + // try { + // console.log('Message received from WebSocket:', event.data); + // const message = JSON.parse(event.data); + // handleOnMessage(message); + // } catch (error) { + // console.error('Error processing message:', error); + // } + // }; - socket.onerror = (error) => { - console.error('WebSocket error:', error); - }; + // socket.onerror = (error) => { + // console.error('WebSocket error:', error); + // }; - socket.onclose = () => { - console.log('WebSocket is closed'); - setIsConnected(false); + // socket.onclose = () => { + // console.log('WebSocket is closed'); + // setIsConnected(false); - if (pingInterval) { - clearInterval(pingInterval); - } + // if (pingInterval) { + // clearInterval(pingInterval); + // } - if (!reconnectTimeout) { - reconnectTimeout = setTimeout(() => { - console.log('Attempting to reconnect WebSocket...'); - connectWebSocket(); - }, 5000); // Reconnect after 5 seconds - } - }; - } catch (error) { - console.error('WebSocket connection error:', error); - } - }; + // if (!reconnectTimeout) { + // reconnectTimeout = setTimeout(() => { + // console.log('Attempting to reconnect WebSocket...'); + // connectWebSocket(); + // }, 5000); // Reconnect after 5 seconds + // } + // }; + // } catch (error) { + // console.error('WebSocket connection error:', error); + // } + // }; - if (smsNumber && winnersData) { - connectWebSocket(); - } + // if (smsNumber && winnersData) { + // connectWebSocket(); + // } - return () => { - if (socket) { - socket.close(); - } - if (reconnectTimeout) { - clearTimeout(reconnectTimeout); - } - if (pingInterval) { - clearInterval(pingInterval); - } - }; - }, [smsNumber]); + // return () => { + // if (socket) { + // socket.close(); + // } + // if (reconnectTimeout) { + // clearTimeout(reconnectTimeout); + // } + // if (pingInterval) { + // clearInterval(pingInterval); + // } + // }; + // }, [smsNumber]); // Function to handle incoming WebSocket message and update winnersData const handleOnMessage = (message: Message) => {