2
0

feat(results): ️ Improve logs details

This commit is contained in:
Baptiste Arnaud
2022-04-19 14:10:22 -07:00
parent 9fbe1cc34c
commit 54a757b21b
17 changed files with 370 additions and 255 deletions

View File

@ -54,7 +54,7 @@ export const ChatBlock = ({
setCurrentTypebotId,
pushEdgeIdInLinkedTypebotQueue,
} = useTypebot()
const { resultValues, updateVariables } = useAnswers()
const { resultValues, updateVariables, resultId } = useAnswers()
const [processedSteps, setProcessedSteps] = useState<Step[]>([])
const [displayedChunks, setDisplayedChunks] = useState<ChatDisplayChunk[]>([])
@ -134,6 +134,7 @@ export const ChatBlock = ({
resultValues,
blocks: typebot.blocks,
onNewLog,
resultId,
},
})
nextEdgeId ? onBlockEnd(nextEdgeId) : displayNextStep()

View File

@ -28,6 +28,7 @@ export type TypebotViewerProps = {
apiHost?: string
style?: CSSProperties
predefinedVariables?: { [key: string]: string | undefined }
resultId?: string
onNewBlockVisible?: (edge: Edge) => void
onNewAnswer?: (answer: Answer) => void
onNewLog?: (log: Omit<Log, 'id' | 'createdAt' | 'resultId'>) => void
@ -40,6 +41,7 @@ export const TypebotViewer = ({
apiHost = process.env.NEXT_PUBLIC_VIEWER_URL?.split(',')[0],
isPreview = false,
style,
resultId,
predefinedVariables,
onNewLog,
onNewBlockVisible,
@ -95,6 +97,7 @@ export const TypebotViewer = ({
onNewLog={handleNewLog}
>
<AnswersContext
resultId={resultId}
onNewAnswer={handleNewAnswer}
onVariablesUpdated={onVariablesUpdated}
>

View File

@ -2,6 +2,7 @@ import { Answer, ResultValues, VariableWithValue } from 'models'
import React, { createContext, ReactNode, useContext, useState } from 'react'
const answersContext = createContext<{
resultId?: string
resultValues: ResultValues
addAnswer: (answer: Answer) => void
updateVariables: (variables: VariableWithValue[]) => void
@ -11,9 +12,11 @@ const answersContext = createContext<{
export const AnswersContext = ({
children,
resultId,
onNewAnswer,
onVariablesUpdated,
}: {
resultId?: string
onNewAnswer: (answer: Answer) => void
onVariablesUpdated?: (variables: VariableWithValue[]) => void
children: ReactNode
@ -45,6 +48,7 @@ export const AnswersContext = ({
return (
<answersContext.Provider
value={{
resultId,
resultValues,
addAnswer,
updateVariables,

View File

@ -33,6 +33,7 @@ type IntegrationContext = {
variables: Variable[]
resultValues: ResultValues
blocks: Block[]
resultId?: string
updateVariables: (variables: VariableWithValue[]) => void
updateVariableValue: (variableId: string, value: string) => void
onNewLog: (log: Omit<Log, 'id' | 'createdAt' | 'resultId'>) => void
@ -92,7 +93,7 @@ const executeGoogleSheetIntegration = async (
const insertRowInGoogleSheets = async (
options: GoogleSheetsInsertRowOptions,
{ variables, apiHost, onNewLog }: IntegrationContext
{ variables, apiHost, onNewLog, resultId }: IntegrationContext
) => {
if (!options.cellsToInsert) {
onNewLog({
@ -102,8 +103,9 @@ const insertRowInGoogleSheets = async (
})
return
}
const params = stringify({ resultId })
const { error } = await sendRequest({
url: `${apiHost}/api/integrations/google-sheets/spreadsheets/${options.spreadsheetId}/sheets/${options.sheetId}`,
url: `${apiHost}/api/integrations/google-sheets/spreadsheets/${options.spreadsheetId}/sheets/${options.sheetId}?${params}`,
method: 'POST',
body: {
credentialsId: options.credentialsId,
@ -121,11 +123,12 @@ const insertRowInGoogleSheets = async (
const updateRowInGoogleSheets = async (
options: GoogleSheetsUpdateRowOptions,
{ variables, apiHost, onNewLog }: IntegrationContext
{ variables, apiHost, onNewLog, resultId }: IntegrationContext
) => {
if (!options.cellsToUpsert || !options.referenceCell) return
const params = stringify({ resultId })
const { error } = await sendRequest({
url: `${apiHost}/api/integrations/google-sheets/spreadsheets/${options.spreadsheetId}/sheets/${options.sheetId}`,
url: `${apiHost}/api/integrations/google-sheets/spreadsheets/${options.spreadsheetId}/sheets/${options.sheetId}?${params}`,
method: 'PATCH',
body: {
credentialsId: options.credentialsId,
@ -153,6 +156,7 @@ const getRowFromGoogleSheets = async (
updateVariables,
apiHost,
onNewLog,
resultId,
}: IntegrationContext
) => {
if (!options.referenceCell || !options.cellsToExtract) return
@ -164,6 +168,7 @@ const getRowFromGoogleSheets = async (
value: parseVariables(variables)(options.referenceCell.value ?? ''),
},
columns: options.cellsToExtract.map((cell) => cell.column),
resultId,
},
{ indices: false }
)
@ -222,10 +227,12 @@ const executeWebhook = async (
apiHost,
resultValues,
onNewLog,
resultId,
}: IntegrationContext
) => {
const params = stringify({ resultId })
const { data, error } = await sendRequest({
url: `${apiHost}/api/typebots/${typebotId}/blocks/${blockId}/steps/${stepId}/executeWebhook`,
url: `${apiHost}/api/typebots/${typebotId}/blocks/${blockId}/steps/${stepId}/executeWebhook?${params}`,
method: 'POST',
body: {
variables,
@ -266,7 +273,7 @@ const executeWebhook = async (
const sendEmail = async (
step: SendEmailStep,
{ variables, apiHost, isPreview, onNewLog }: IntegrationContext
{ variables, apiHost, isPreview, onNewLog, resultId }: IntegrationContext
) => {
if (isPreview) {
onNewLog({
@ -279,7 +286,7 @@ const sendEmail = async (
const { options } = step
const replyTo = parseVariables(variables)(options.replyTo)
const { error } = await sendRequest({
url: `${apiHost}/api/integrations/email`,
url: `${apiHost}/api/integrations/email?resultId=${resultId}`,
method: 'POST',
body: {
credentialsId: options.credentialsId,