diff --git a/apps/builder/src/features/editor/components/TypebotHeader.tsx b/apps/builder/src/features/editor/components/TypebotHeader.tsx
index 29eb8c766..10cf25302 100644
--- a/apps/builder/src/features/editor/components/TypebotHeader.tsx
+++ b/apps/builder/src/features/editor/components/TypebotHeader.tsx
@@ -253,7 +253,7 @@ const RightElements = ({
}: StackProps & { isResultsDisplayed: boolean }) => {
const router = useRouter()
const { t } = useTranslate()
- const { typebot, currentUserMode, save } = useTypebot()
+ const { typebot, currentUserMode, save, isSavingLoading } = useTypebot()
const {
setRightPanel,
rightPanel,
@@ -264,7 +264,7 @@ const RightElements = ({
const handlePreviewClick = async () => {
setStartPreviewAtGroup(undefined)
setStartPreviewAtEvent(undefined)
- save().then()
+ await save()
setRightPanel(RightPanel.PREVIEW)
}
@@ -282,7 +282,7 @@ const RightElements = ({
}
size="sm"
iconSpacing={{ base: 0, xl: 2 }}
diff --git a/apps/builder/src/features/editor/hooks/useUndo.ts b/apps/builder/src/features/editor/hooks/useUndo.ts
index 3b10d942c..d7e24af3a 100644
--- a/apps/builder/src/features/editor/hooks/useUndo.ts
+++ b/apps/builder/src/features/editor/hooks/useUndo.ts
@@ -4,6 +4,7 @@ import { isDefined } from '@typebot.io/lib'
export interface Actions {
set: (newPresent: T | ((current: T) => T) | undefined) => void
+ setUpdateDate: (updateDate: Date) => void
undo: () => void
redo: () => void
flush: () => void
@@ -107,6 +108,16 @@ export const useUndo = (
[history, params?.isReadOnly]
)
+ const setUpdateDate = useCallback(
+ (updatedAt: Date) => {
+ set((current) => ({
+ ...current,
+ updatedAt,
+ }))
+ },
+ [set]
+ )
+
const flush = useCallback(() => {
if (params?.isReadOnly) return
setHistory({
@@ -116,5 +127,8 @@ export const useUndo = (
})
}, [params?.isReadOnly])
- return [history.present, { set, undo, redo, flush, canUndo, canRedo }]
+ return [
+ history.present,
+ { set, undo, redo, flush, setUpdateDate, canUndo, canRedo },
+ ]
}
diff --git a/apps/builder/src/features/editor/providers/TypebotProvider.tsx b/apps/builder/src/features/editor/providers/TypebotProvider.tsx
index 810325ebb..27dabe83b 100644
--- a/apps/builder/src/features/editor/providers/TypebotProvider.tsx
+++ b/apps/builder/src/features/editor/providers/TypebotProvider.tsx
@@ -174,7 +174,15 @@ export const TypebotProvider = ({
const [
localTypebot,
- { redo, undo, flush, canRedo, canUndo, set: setLocalTypebot },
+ {
+ redo,
+ undo,
+ flush,
+ canRedo,
+ canUndo,
+ set: setLocalTypebot,
+ setUpdateDate,
+ },
] = useUndo(undefined, {
isReadOnly,
onUndo: (t) => {
@@ -216,24 +224,33 @@ export const TypebotProvider = ({
const typebotToSave = {
...localTypebot,
...updates,
- updatedAt: new Date(),
}
if (dequal(omit(typebot, 'updatedAt'), omit(typebotToSave, 'updatedAt')))
return
const newParsedTypebot = typebotV6Schema.parse({ ...typebotToSave })
setLocalTypebot(newParsedTypebot)
try {
- await updateTypebot({
+ const {
+ typebot: { updatedAt },
+ } = await updateTypebot({
typebotId: newParsedTypebot.id,
typebot: newParsedTypebot,
})
+ setUpdateDate(updatedAt)
} catch {
setLocalTypebot({
...localTypebot,
})
}
},
- [isReadOnly, localTypebot, setLocalTypebot, typebot, updateTypebot]
+ [
+ isReadOnly,
+ localTypebot,
+ setLocalTypebot,
+ setUpdateDate,
+ typebot,
+ updateTypebot,
+ ]
)
useAutoSave(
diff --git a/apps/builder/src/features/typebot/api/updateTypebot.ts b/apps/builder/src/features/typebot/api/updateTypebot.ts
index 55b6e3c31..0e104bf50 100644
--- a/apps/builder/src/features/typebot/api/updateTypebot.ts
+++ b/apps/builder/src/features/typebot/api/updateTypebot.ts
@@ -120,8 +120,7 @@ export const updateTypebot = authenticatedProcedure
if (
typebot.updatedAt &&
- new Date(existingTypebot?.updatedAt).getTime() >
- typebot.updatedAt.getTime()
+ existingTypebot.updatedAt.getTime() > typebot.updatedAt.getTime()
)
throw new TRPCError({
code: 'CONFLICT',
@@ -197,7 +196,6 @@ export const updateTypebot = authenticatedProcedure
}),
isClosed: typebot.isClosed,
whatsAppCredentialsId: typebot.whatsAppCredentialsId ?? undefined,
- updatedAt: typebot.updatedAt,
},
})