quiz temporarely backed up
This commit is contained in:
parent
9ac1b7e135
commit
6983d0df96
|
|
@ -125,15 +125,14 @@ const page = ({ params }: IParams) => {
|
||||||
<div className="flex flex-col md:gap-[160px] gap-[80px]">
|
<div className="flex flex-col md:gap-[160px] gap-[80px]">
|
||||||
{data?.data ? (
|
{data?.data ? (
|
||||||
<QuizQuestionList
|
<QuizQuestionList
|
||||||
dynamic
|
paramsId={params.quiz_id}
|
||||||
id={params.quiz_id}
|
|
||||||
initialQuestionsData={data}
|
initialQuestionsData={data}
|
||||||
setQuizFinished={setQuizFinished}
|
setQuizFinished={setQuizFinished}
|
||||||
quizFinished={quizFinished}
|
quizFinished={quizFinished}
|
||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{data?.data.id && (
|
{data?.data.id && quizFinished && (
|
||||||
<QuizWinnerTable
|
<QuizWinnerTable
|
||||||
smsNumber={data.data.sms_number}
|
smsNumber={data.data.sms_number}
|
||||||
quizId={data?.data.id}
|
quizId={data?.data.id}
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,6 @@ const page = () => {
|
||||||
<div className="flex flex-col md:gap-[160px] gap-[80px]">
|
<div className="flex flex-col md:gap-[160px] gap-[80px]">
|
||||||
{data?.data ? (
|
{data?.data ? (
|
||||||
<QuizQuestionList
|
<QuizQuestionList
|
||||||
id="active"
|
|
||||||
initialQuestionsData={data}
|
initialQuestionsData={data}
|
||||||
setQuizFinished={setQuizFinished}
|
setQuizFinished={setQuizFinished}
|
||||||
quizFinished={quizFinished}
|
quizFinished={quizFinished}
|
||||||
|
|
@ -97,7 +96,7 @@ const page = () => {
|
||||||
{/* {data?.data.id && quizFinished ? (
|
{/* {data?.data.id && quizFinished ? (
|
||||||
<QuizWinnerTable quizId={data?.data.id} quizFinished={quizFinished} />
|
<QuizWinnerTable quizId={data?.data.id} quizFinished={quizFinished} />
|
||||||
) : null} */}
|
) : null} */}
|
||||||
{data?.data.id && (
|
{data?.data.id && quizFinished && (
|
||||||
<QuizWinnerTable
|
<QuizWinnerTable
|
||||||
smsNumber={data.data.sms_number}
|
smsNumber={data.data.sms_number}
|
||||||
quizId={data?.data.id}
|
quizId={data?.data.id}
|
||||||
|
|
|
||||||
|
|
@ -10,44 +10,19 @@ interface IProps {
|
||||||
setQuizFinished: Dispatch<boolean>;
|
setQuizFinished: Dispatch<boolean>;
|
||||||
quizFinished: boolean;
|
quizFinished: boolean;
|
||||||
initialQuestionsData: IQuizQuestions;
|
initialQuestionsData: IQuizQuestions;
|
||||||
id: string;
|
paramsId?: string;
|
||||||
dynamic?: boolean;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const QuizQuestionList = ({
|
const QuizQuestionList = ({
|
||||||
setQuizFinished,
|
setQuizFinished,
|
||||||
quizFinished,
|
quizFinished,
|
||||||
initialQuestionsData,
|
initialQuestionsData,
|
||||||
id,
|
paramsId,
|
||||||
dynamic,
|
|
||||||
}: IProps) => {
|
}: IProps) => {
|
||||||
const [data, setData] = useState<IQuizQuestions>(initialQuestionsData);
|
const [data, setData] = useState<IQuizQuestions>(initialQuestionsData);
|
||||||
const { quizSearchData } = useContext(QuizContext).quizSearchContext;
|
const { quizSearchData } = useContext(QuizContext).quizSearchContext;
|
||||||
const { setQuestionsData } = useContext(QuizContext).quizQuestionsContext;
|
const { setQuestionsData } = useContext(QuizContext).quizQuestionsContext;
|
||||||
|
|
||||||
const [smsNumber, setSmsNumber] = useState<string>();
|
|
||||||
const [socket, setSocket] = useState<WebSocket | null>(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(() => {
|
useEffect(() => {
|
||||||
// Queries.getQuizQuestions().then((res) => setData(res));
|
// Queries.getQuizQuestions().then((res) => setData(res));
|
||||||
|
|
||||||
|
|
@ -59,79 +34,72 @@ const QuizQuestionList = ({
|
||||||
// : setQuizFinished(true),
|
// : setQuizFinished(true),
|
||||||
// );
|
// );
|
||||||
|
|
||||||
if (!dynamic && quizFinished === false) {
|
console.log('quizFinished', quizFinished);
|
||||||
// const interval = setInterval(() => {
|
|
||||||
// Queries.getQuizQuestions().then((res) => {
|
|
||||||
// setData(res);
|
|
||||||
// setQuestionsData(res.data.questions);
|
|
||||||
|
|
||||||
// res.data.questions.map((question) =>
|
if (paramsId && !quizFinished) {
|
||||||
// question.status === 'active' || question.status === 'new'
|
const interval = setInterval(() => {
|
||||||
// ? setQuizFinished(false)
|
Queries.getQuiz(paramsId).then((res) => {
|
||||||
// : setQuizFinished(true),
|
setData(res);
|
||||||
// );
|
setQuestionsData(res.data.questions);
|
||||||
// });
|
|
||||||
|
|
||||||
// // const isActive = data?.data.questions.some(
|
res.data.questions.map((question) =>
|
||||||
// // (question) => question.status === 'active' || question.status === 'new',
|
question.status === 'active' || question.status === 'new'
|
||||||
// // );
|
? setQuizFinished(false)
|
||||||
|
: setQuizFinished(true),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}, 60000);
|
||||||
|
return () => clearInterval(interval);
|
||||||
|
}
|
||||||
|
|
||||||
// // data.data.questions.map((question) =>
|
if (!paramsId && !quizFinished) {
|
||||||
// // question.status === 'active' || question.status === 'new'
|
const interval = setInterval(() => {
|
||||||
// // ? setQuizFinished(false)
|
Queries.getQuizQuestions().then((res) => {
|
||||||
// // : setQuizFinished(true),
|
setData(res);
|
||||||
// // );
|
setQuestionsData(res.data.questions);
|
||||||
// }, 60000);
|
|
||||||
// return () => clearInterval(interval);
|
|
||||||
Queries.getQuizQuestions().then((res) => {
|
|
||||||
setData(res);
|
|
||||||
setQuestionsData(res.data.questions);
|
|
||||||
setSmsNumber(res.data.sms_number);
|
|
||||||
|
|
||||||
res.data.questions.map((question) =>
|
res.data.questions.map((question) =>
|
||||||
question.status === 'active' || question.status === 'new'
|
question.status === 'active' || question.status === 'new'
|
||||||
? setQuizFinished(false)
|
? setQuizFinished(false)
|
||||||
: setQuizFinished(true),
|
: setQuizFinished(true),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
// const interval = setInterval(() => {
|
|
||||||
// Queries.getQuiz(id).then((res) => {
|
|
||||||
// setData(res);
|
|
||||||
// setQuestionsData(res.data.questions);
|
|
||||||
|
|
||||||
// res.data.questions.map((question) =>
|
// const isActive = data?.data.questions.some(
|
||||||
// question.status === 'active' || question.status === 'new'
|
// (question) => question.status === 'active' || question.status === 'new',
|
||||||
// ? setQuizFinished(false)
|
// );
|
||||||
// : setQuizFinished(true),
|
|
||||||
// );
|
|
||||||
// });
|
|
||||||
// }, 60000);
|
|
||||||
// return () => clearInterval(interval);
|
|
||||||
|
|
||||||
Queries.getQuiz(id).then((res) => {
|
// data.data.questions.map((question) =>
|
||||||
setData(res);
|
// question.status === 'active' || question.status === 'new'
|
||||||
setQuestionsData(res.data.questions);
|
// ? setQuizFinished(false)
|
||||||
setSmsNumber(res.data.sms_number);
|
// : setQuizFinished(true),
|
||||||
|
// );
|
||||||
|
}, 60000);
|
||||||
|
return () => clearInterval(interval);
|
||||||
|
|
||||||
res.data.questions.map((question) =>
|
// Queries.getQuizQuestions().then((res) => {
|
||||||
question.status === 'active' || question.status === 'new'
|
// setData(res);
|
||||||
? setQuizFinished(false)
|
// setQuestionsData(res.data.questions);
|
||||||
: setQuizFinished(true),
|
// setSmsNumber(res.data.sms_number);
|
||||||
);
|
|
||||||
});
|
// res.data.questions.map((question) =>
|
||||||
|
// question.status === 'active' || question.status === 'new'
|
||||||
|
// ? setQuizFinished(false)
|
||||||
|
// : setQuizFinished(true),
|
||||||
|
// );
|
||||||
|
// });
|
||||||
}
|
}
|
||||||
}, [quizFinished]);
|
}, [quizFinished]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col gap-[40px] md:gap-[160px]">
|
<div className="flex flex-col gap-[40px] md:gap-[160px]">
|
||||||
{data && !quizSearchData ? (
|
{data && !quizSearchData ? (
|
||||||
data.data.questions.map((question, id) =>
|
data.data.questions.map((question, paramsId) =>
|
||||||
question.status !== 'new' ? (
|
question.status !== 'new' ? (
|
||||||
<QuizQuestion
|
<QuizQuestion
|
||||||
score={question.score}
|
score={question.score}
|
||||||
questionId={question.id}
|
questionId={question.id}
|
||||||
questionNumber={id}
|
questionNumber={paramsId}
|
||||||
finished={question.status}
|
finished={question.status}
|
||||||
question={question.question}
|
question={question.question}
|
||||||
key={v4()}
|
key={v4()}
|
||||||
|
|
|
||||||
|
|
@ -52,85 +52,84 @@ const QuizWinnerTable = ({ quizId, quizFinished, smsNumber }: IProps) => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
Queries.getQuizWinners(quizId).then((res) => {
|
Queries.getQuizWinners(quizId).then((res) => {
|
||||||
setWinnersData(res);
|
setWinnersData(res);
|
||||||
console.log(res);
|
|
||||||
});
|
});
|
||||||
}, [quizId]);
|
}, [quizId]);
|
||||||
|
|
||||||
useEffect(() => {
|
// useEffect(() => {
|
||||||
let socket: WebSocket | null = null;
|
// let socket: WebSocket | null = null;
|
||||||
let reconnectTimeout: NodeJS.Timeout | null = null;
|
// let reconnectTimeout: NodeJS.Timeout | null = null;
|
||||||
let pingInterval: NodeJS.Timeout | null = null;
|
// let pingInterval: NodeJS.Timeout | null = null;
|
||||||
|
|
||||||
const connectWebSocket = () => {
|
// const connectWebSocket = () => {
|
||||||
try {
|
// try {
|
||||||
socket = new WebSocket(`wss://sms.turkmentv.gov.tm/ws/quiz?dst=${smsNumber}`);
|
// socket = new WebSocket(`wss://sms.turkmentv.gov.tm/ws/quiz?dst=${smsNumber}`);
|
||||||
setSocket(socket);
|
// setSocket(socket);
|
||||||
|
|
||||||
socket.onopen = () => {
|
// socket.onopen = () => {
|
||||||
console.log('WebSocket is connected');
|
// console.log('WebSocket is connected');
|
||||||
setIsConnected(true);
|
// setIsConnected(true);
|
||||||
|
|
||||||
pingInterval = setInterval(() => {
|
// pingInterval = setInterval(() => {
|
||||||
if (socket?.readyState === WebSocket.OPEN) {
|
// if (socket?.readyState === WebSocket.OPEN) {
|
||||||
try {
|
// try {
|
||||||
socket.send(JSON.stringify({ type: 'ping' }));
|
// socket.send(JSON.stringify({ type: 'ping' }));
|
||||||
} catch (error) {
|
// } catch (error) {
|
||||||
console.error('Error sending ping:', error);
|
// console.error('Error sending ping:', error);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}, 25000); // Ping every 25 seconds
|
// }, 25000); // Ping every 25 seconds
|
||||||
};
|
// };
|
||||||
|
|
||||||
socket.onmessage = (event) => {
|
// socket.onmessage = (event) => {
|
||||||
try {
|
// try {
|
||||||
console.log('Message received from WebSocket:', event.data);
|
// console.log('Message received from WebSocket:', event.data);
|
||||||
const message = JSON.parse(event.data);
|
// const message = JSON.parse(event.data);
|
||||||
handleOnMessage(message);
|
// handleOnMessage(message);
|
||||||
} catch (error) {
|
// } catch (error) {
|
||||||
console.error('Error processing message:', error);
|
// console.error('Error processing message:', error);
|
||||||
}
|
// }
|
||||||
};
|
// };
|
||||||
|
|
||||||
socket.onerror = (error) => {
|
// socket.onerror = (error) => {
|
||||||
console.error('WebSocket error:', error);
|
// console.error('WebSocket error:', error);
|
||||||
};
|
// };
|
||||||
|
|
||||||
socket.onclose = () => {
|
// socket.onclose = () => {
|
||||||
console.log('WebSocket is closed');
|
// console.log('WebSocket is closed');
|
||||||
setIsConnected(false);
|
// setIsConnected(false);
|
||||||
|
|
||||||
if (pingInterval) {
|
// if (pingInterval) {
|
||||||
clearInterval(pingInterval);
|
// clearInterval(pingInterval);
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (!reconnectTimeout) {
|
// if (!reconnectTimeout) {
|
||||||
reconnectTimeout = setTimeout(() => {
|
// reconnectTimeout = setTimeout(() => {
|
||||||
console.log('Attempting to reconnect WebSocket...');
|
// console.log('Attempting to reconnect WebSocket...');
|
||||||
connectWebSocket();
|
// connectWebSocket();
|
||||||
}, 5000); // Reconnect after 5 seconds
|
// }, 5000); // Reconnect after 5 seconds
|
||||||
}
|
// }
|
||||||
};
|
// };
|
||||||
} catch (error) {
|
// } catch (error) {
|
||||||
console.error('WebSocket connection error:', error);
|
// console.error('WebSocket connection error:', error);
|
||||||
}
|
// }
|
||||||
};
|
// };
|
||||||
|
|
||||||
if (smsNumber && winnersData) {
|
// if (smsNumber && winnersData) {
|
||||||
connectWebSocket();
|
// connectWebSocket();
|
||||||
}
|
// }
|
||||||
|
|
||||||
return () => {
|
// return () => {
|
||||||
if (socket) {
|
// if (socket) {
|
||||||
socket.close();
|
// socket.close();
|
||||||
}
|
// }
|
||||||
if (reconnectTimeout) {
|
// if (reconnectTimeout) {
|
||||||
clearTimeout(reconnectTimeout);
|
// clearTimeout(reconnectTimeout);
|
||||||
}
|
// }
|
||||||
if (pingInterval) {
|
// if (pingInterval) {
|
||||||
clearInterval(pingInterval);
|
// clearInterval(pingInterval);
|
||||||
}
|
// }
|
||||||
};
|
// };
|
||||||
}, [smsNumber]);
|
// }, [smsNumber]);
|
||||||
|
|
||||||
// Function to handle incoming WebSocket message and update winnersData
|
// Function to handle incoming WebSocket message and update winnersData
|
||||||
const handleOnMessage = (message: Message) => {
|
const handleOnMessage = (message: Message) => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue