diff --git a/apps/builder/components/shared/Graph/Edges/Edge.tsx b/apps/builder/components/shared/Graph/Edges/Edge.tsx
index ec08a7210f..b8472d322d 100644
--- a/apps/builder/components/shared/Graph/Edges/Edge.tsx
+++ b/apps/builder/components/shared/Graph/Edges/Edge.tsx
@@ -75,7 +75,6 @@ export const Edge = ({ edge }: { edge: EdgeProps }) => {
sourceTop,
])
- if (sourceTop === 0) return <>>
return (
- {isConnectable && hasDefaultConnector(localStep) && (
+ {(localStep.outgoingEdgeId ||
+ (isConnectable && hasDefaultConnector(localStep))) && (
) => void
@@ -89,9 +89,34 @@ export const deleteEdgeDraft = (
edgeId: string
) => {
const edgeIndex = typebot.edges.findIndex(byId(edgeId))
+ deleteOutgoingEdgeIdProps(typebot, edgeIndex)
typebot.edges.splice(edgeIndex, 1)
}
+const deleteOutgoingEdgeIdProps = (
+ typebot: WritableDraft,
+ edgeIndex: number
+) => {
+ const edge = typebot.edges[edgeIndex]
+ const fromBlockIndex = typebot.blocks.findIndex(byId(edge.from.blockId))
+ const fromStepIndex = typebot.blocks[fromBlockIndex].steps.findIndex(
+ byId(edge.from.stepId)
+ )
+ const step = typebot.blocks[fromBlockIndex].steps[fromStepIndex]
+ const fromItemIndex =
+ edge.from.itemId && stepHasItems(step)
+ ? step.items.findIndex(byId(edge.from.itemId))
+ : -1
+ if (fromStepIndex !== -1)
+ typebot.blocks[fromBlockIndex].steps[fromStepIndex].outgoingEdgeId =
+ undefined
+ if (fromItemIndex !== -1) {
+ ;(
+ typebot.blocks[fromBlockIndex].steps[fromStepIndex] as StepWithItems
+ ).items[fromItemIndex].outgoingEdgeId = undefined
+ }
+}
+
export const cleanUpEdgeDraft = (
typebot: WritableDraft,
deletedNodeId: string
diff --git a/apps/builder/contexts/TypebotContext/actions/steps.ts b/apps/builder/contexts/TypebotContext/actions/steps.ts
index 84df705ce7..d80624ee7e 100644
--- a/apps/builder/contexts/TypebotContext/actions/steps.ts
+++ b/apps/builder/contexts/TypebotContext/actions/steps.ts
@@ -10,7 +10,7 @@ import { removeEmptyBlocks } from './blocks'
import { WritableDraft } from 'immer/dist/types/types-external'
import { SetTypebot } from '../TypebotContext'
import produce from 'immer'
-import { cleanUpEdgeDraft } from './edges'
+import { cleanUpEdgeDraft, deleteEdgeDraft } from './edges'
export type StepsActions = {
createStep: (
@@ -76,11 +76,18 @@ const createStepDraft = (
typebot: WritableDraft,
step: DraggableStep | DraggableStepType,
blockId: string,
- indices: StepIndices
+ { blockIndex, stepIndex }: StepIndices
) => {
+ const steps = typebot.blocks[blockIndex].steps
+ if (
+ stepIndex === steps.length &&
+ stepIndex > 0 &&
+ steps[stepIndex - 1].outgoingEdgeId
+ )
+ deleteEdgeDraft(typebot, steps[stepIndex - 1].outgoingEdgeId as string)
typeof step === 'string'
- ? createNewStep(typebot, step, blockId, indices)
- : moveStepToBlock(typebot, step, blockId, indices)
+ ? createNewStep(typebot, step, blockId, { blockIndex, stepIndex })
+ : moveStepToBlock(typebot, step, blockId, { blockIndex, stepIndex })
removeEmptyBlocks(typebot)
}