🪥 Consult submissions
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
import { Answer, PublicTypebot, TypebotViewer } from 'bot-engine'
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { upsertAnswer } from 'services/answer'
|
||||
import { SEO } from '../components/Seo'
|
||||
import { createResult, updateResult } from '../services/result'
|
||||
import { ErrorPage } from './ErrorPage'
|
||||
@ -38,9 +39,9 @@ export const TypebotPage = ({ typebot, isIE, url }: TypebotPageProps) => {
|
||||
}
|
||||
}
|
||||
|
||||
const handleAnswersUpdate = async (answers: Answer[]) => {
|
||||
const handleNewAnswer = async (answer: Answer) => {
|
||||
if (!resultId) return setError(new Error('Result was not created'))
|
||||
const { error } = await updateResult(resultId, { answers })
|
||||
const { error } = await upsertAnswer({ ...answer, resultId })
|
||||
if (error) setError(error)
|
||||
}
|
||||
|
||||
@ -62,7 +63,7 @@ export const TypebotPage = ({ typebot, isIE, url }: TypebotPageProps) => {
|
||||
{resultId && (
|
||||
<TypebotViewer
|
||||
typebot={typebot}
|
||||
onAnswersUpdate={handleAnswersUpdate}
|
||||
onNewAnswer={handleNewAnswer}
|
||||
onCompleted={handleCompleted}
|
||||
/>
|
||||
)}
|
||||
|
25
apps/viewer/pages/api/answers.ts
Normal file
25
apps/viewer/pages/api/answers.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import { Answer } from 'db'
|
||||
import prisma from 'libs/prisma'
|
||||
import { NextApiRequest, NextApiResponse } from 'next'
|
||||
import { methodNotAllowed } from 'utils'
|
||||
|
||||
const handler = async (req: NextApiRequest, res: NextApiResponse) => {
|
||||
if (req.method === 'PUT') {
|
||||
const answer = JSON.parse(req.body) as Answer
|
||||
const result = await prisma.answer.upsert({
|
||||
where: {
|
||||
resultId_blockId_stepId: {
|
||||
resultId: answer.resultId,
|
||||
blockId: answer.blockId,
|
||||
stepId: answer.stepId,
|
||||
},
|
||||
},
|
||||
create: answer,
|
||||
update: answer,
|
||||
})
|
||||
return res.send(result)
|
||||
}
|
||||
return methodNotAllowed(res)
|
||||
}
|
||||
|
||||
export default handler
|
10
apps/viewer/services/answer.ts
Normal file
10
apps/viewer/services/answer.ts
Normal file
@ -0,0 +1,10 @@
|
||||
import { Answer } from 'db'
|
||||
import { sendRequest } from 'utils'
|
||||
|
||||
export const upsertAnswer = async (answer: Answer) => {
|
||||
return sendRequest<Answer>({
|
||||
url: `/api/answers`,
|
||||
method: 'PUT',
|
||||
body: answer,
|
||||
})
|
||||
}
|
Reference in New Issue
Block a user