From d3f80603c441cb41de5f1ed43ceffd1957b190db Mon Sep 17 00:00:00 2001 From: Tiago Ribeiro Date: Wed, 24 Jan 2024 15:37:51 +0000 Subject: [PATCH] Improved the Speaking Generation --- src/pages/(generation)/SpeakingGeneration.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/pages/(generation)/SpeakingGeneration.tsx b/src/pages/(generation)/SpeakingGeneration.tsx index 2323381b..1b83ce33 100644 --- a/src/pages/(generation)/SpeakingGeneration.tsx +++ b/src/pages/(generation)/SpeakingGeneration.tsx @@ -7,6 +7,7 @@ import {convertCamelCaseToReadable} from "@/utils/string"; import {Tab} from "@headlessui/react"; import axios from "axios"; import clsx from "clsx"; +import moment from "moment"; import {useRouter} from "next/router"; import {useEffect, useState} from "react"; import {BsArrowRepeat, BsCheck} from "react-icons/bs"; @@ -19,6 +20,7 @@ const PartTab = ({part, index, setPart}: {part?: SpeakingPart; index: number; se const generate = () => { setPart(undefined); setIsLoading(true); + axios .get(`/api/exam/speaking/generate/speaking_task_${index}`) .then((result) => { @@ -38,11 +40,15 @@ const PartTab = ({part, index, setPart}: {part?: SpeakingPart; index: number; se toast.info("This will take quite a while, please do not leave this page or close the tab/window."); setIsLoading(true); + const initialTime = moment(); + axios .post(`/api/exam/speaking/generate/speaking/generate_${index === 3 ? "interactive" : "speaking"}_video`, part) .then((result) => { - playSound(typeof result.data === "string" ? "error" : "check"); - if (typeof result.data === "string") return toast.error("Something went wrong, please try to generate the video again."); + const isError = typeof result.data === "string" || moment().diff(initialTime, "seconds") < 60; + + playSound(isError ? "error" : "check"); + if (isError) return toast.error("Something went wrong, please try to generate the video again."); setPart({...part, result: result.data}); }) .catch((e) => { @@ -98,7 +104,7 @@ const PartTab = ({part, index, setPart}: {part?: SpeakingPart; index: number; se Generating... )} - {part && ( + {part && !isLoading && (

{part.topic}

{part.question && {part.question}}