Implement final answer management in submission hook and storage utilities. Add functions to save, load, and clear final answers in localStorage. Update useSubmission hook to prioritize final answers over drafts, enhancing user experience during task submissions.
Some checks failed
platform/bro-js/challenge-pl/pipeline/head There was a failure building this commit
Some checks failed
platform/bro-js/challenge-pl/pipeline/head There was a failure building this commit
This commit is contained in:
@@ -6,6 +6,7 @@ import {
|
||||
} from '../__data__/api/api'
|
||||
import type { ChallengeSubmission, QueueStatus } from '../__data__/types'
|
||||
import { useChallenge } from '../context/ChallengeContext'
|
||||
import { loadFinalAnswer, saveFinalAnswer } from '../utils/drafts'
|
||||
|
||||
interface UseSubmissionArgs {
|
||||
taskId: string
|
||||
@@ -43,13 +44,24 @@ export const useSubmission = ({ taskId }: UseSubmissionArgs): SubmissionResult =
|
||||
|
||||
useEffect(() => {
|
||||
behaviorTracker.reset()
|
||||
const draft = loadDraft(taskId)
|
||||
if (draft) {
|
||||
setResultState(draft)
|
||||
|
||||
// Сначала проверяем финальный ответ (если задание уже решалось)
|
||||
const finalAnswer = loadFinalAnswer(taskId)
|
||||
if (finalAnswer) {
|
||||
setResultState(finalAnswer)
|
||||
behaviorTracker.markDraftUsed()
|
||||
} else {
|
||||
setResultState('')
|
||||
// Если финального ответа нет, проверяем черновик
|
||||
const draft = loadDraft(taskId)
|
||||
if (draft) {
|
||||
setResultState(draft)
|
||||
behaviorTracker.markDraftUsed()
|
||||
} else {
|
||||
// Если ничего нет - пустое поле
|
||||
setResultState('')
|
||||
}
|
||||
}
|
||||
|
||||
pollingManager.stop()
|
||||
setQueueId(null)
|
||||
setQueueStatus(null)
|
||||
@@ -114,6 +126,9 @@ export const useSubmission = ({ taskId }: UseSubmissionArgs): SubmissionResult =
|
||||
})
|
||||
|
||||
setFinalSubmission(status.submission)
|
||||
// Сохраняем финальный ответ для восстановления при возврате
|
||||
saveFinalAnswer(taskId, result)
|
||||
// Очищаем черновик, так как теперь есть финальный ответ
|
||||
clearDraft(taskId)
|
||||
pollingManager.stop()
|
||||
return false
|
||||
|
||||
Reference in New Issue
Block a user