From 59ac6f00c6cd87132383f290dd6fed012502c853 Mon Sep 17 00:00:00 2001 From: rpapin <rpapin@grandlyon.com> Date: Thu, 17 Dec 2020 12:02:06 +0100 Subject: [PATCH] init route logic --- src/components/Quiz/QuizBegin.tsx | 31 +++++++++++-------------------- src/enum/userChallenge.enum.ts | 1 + src/locales/fr.json | 3 +++ src/services/challenge.service.ts | 11 +++++++++++ src/services/quiz.service.ts | 7 +++++++ 5 files changed, 33 insertions(+), 20 deletions(-) diff --git a/src/components/Quiz/QuizBegin.tsx b/src/components/Quiz/QuizBegin.tsx index 60f30af7e..474b7ced5 100644 --- a/src/components/Quiz/QuizBegin.tsx +++ b/src/components/Quiz/QuizBegin.tsx @@ -7,6 +7,10 @@ import quizStars from 'assets/icons/visu/quiz/quizStars.svg' import StyledStopButton from 'components/CommonKit/Button/StyledStopButton' import StyledIcon from 'components/CommonKit/Icon/StyledIcon' import { useDispatch, useSelector } from 'react-redux' +import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum' +import ChallengeService from 'services/challenge.service' +import { setChallengeConsumption } from 'store/challenge/challenge.actions' +import { UserChallenge } from 'models' interface QuizBeginProps { userChallenge: UserChallenge @@ -17,33 +21,20 @@ const QuizBegin: React.FC<QuizBeginProps> = ({ }: QuizBeginProps) => { const client: Client = useClient() const { t } = useI18n() - const [height, setHeight] = useState<number>(0) const launchQuiz = useCallback(async () => { - // if (fluidTypes.length > 0) { - // const challengeService = new ChallengeService(client) - // const updatedChallenge = await challengeService.updateUserChallenge( - // userChallenge, - // UserChallengeUpdateFlag.DUEL_START - // ) - // const dataloads = await challengeService.getUserChallengeDataload( - // updatedChallenge - // ) - // dispatch(setChallengeConsumption(updatedChallenge, dataloads)) - // } else { - // return toggleNoFluidModal() - // } - }, []) - - useEffect(() => { - console.log(userChallenge) - }, []) + const challengeService = new ChallengeService(client) + challengeService.updateUserChallenge( + userChallenge, + UserChallengeUpdateFlag.QUIZ_START + ) + }, [client, userChallenge]) return ( <div className="quiz-begin-container"> <StyledIcon className="quiz-icon" icon={quizIcon} size={219} /> <StyledIcon className="quiz-icon" icon={quizStars} size={219} /> - <div className="quiz-explanation">{t('duel.explanation')}</div> + <div className="quiz-explanation">{t('quiz.explanation')}</div> <div className="button-start"> <StyledStopButton color="secondary" onClick={launchQuiz}> {t('duel.start_button')} diff --git a/src/enum/userChallenge.enum.ts b/src/enum/userChallenge.enum.ts index a364ca5a8..41eaf99fa 100644 --- a/src/enum/userChallenge.enum.ts +++ b/src/enum/userChallenge.enum.ts @@ -7,6 +7,7 @@ export enum UserChallengeUpdateFlag { DUEL_WIN = 14, DUEL_LOSS = 15, QUIZ = 20, + QUIZ_START = 21, MISSION = 30, } diff --git a/src/locales/fr.json b/src/locales/fr.json index 86bc5cc7e..311a66e23 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -390,5 +390,8 @@ "message2": "et presque gagné un ours polaire...", "button": "Dommage..." } + }, + "quiz" : { + "explanation" : "Répondez correctement au 5 questions et remportez 5 des 15 étoiles nécessaires pour débloquer le défi final" } } diff --git a/src/services/challenge.service.ts b/src/services/challenge.service.ts index be94502bb..ac26199d4 100644 --- a/src/services/challenge.service.ts +++ b/src/services/challenge.service.ts @@ -26,6 +26,7 @@ import DuelService from 'services/duel.service' import QuizService from 'services/quiz.service' import ConsumptionDataManager from 'services/consumption.service' import { getRelationship } from 'utils/utils' +import quizService from 'services/quiz.service' export default class ChallengeService { private readonly _client: Client @@ -290,7 +291,9 @@ export default class ChallengeService { ): Promise<UserChallenge> { let updatedUserChallenge: UserChallenge let updatedDuel = userChallenge.duel + let updatedQuiz = userChallenge.quiz const duelService = new DuelService(this._client) + const quizService = new QuizService(this._client) switch (flag) { case UserChallengeUpdateFlag.CHALLENGE: case UserChallengeUpdateFlag.DUEL_CONSUMPTION: @@ -350,6 +353,14 @@ export default class ChallengeService { success: UserChallengeSuccess.LOST, } break + case UserChallengeUpdateFlag.QUIZ_START: + updatedQuiz = await quizService.startUserQuiz(userChallenge.quiz) + updatedUserChallenge = { + ...userChallenge, + quiz: updatedQuiz, + } + console.log(updatedUserChallenge) + break default: updatedUserChallenge = userChallenge break diff --git a/src/services/quiz.service.ts b/src/services/quiz.service.ts index 8b1f0afa1..e934815f1 100644 --- a/src/services/quiz.service.ts +++ b/src/services/quiz.service.ts @@ -127,4 +127,11 @@ export default class QuizService { } return userQuiz } + public async startUserQuiz(userQuiz: UserQuiz): Promise<UserQuiz> { + const updatedUserQuiz: UserQuiz = { + ...userQuiz, + state: QuizState.ONGOING, + } + return updatedUserQuiz + } } -- GitLab