Skip to content

Commit

Permalink
perf(flow): ⚡️ Better save management
Browse files Browse the repository at this point in the history
  • Loading branch information
baptisteArno committed Mar 2, 2022
1 parent a5a1fef commit 507fe4f
Showing 1 changed file with 24 additions and 18 deletions.
42 changes: 24 additions & 18 deletions apps/builder/contexts/TypebotContext/TypebotContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -155,19 +155,22 @@ export const TypebotContext = ({
})
}

useAutoSave({
handler: saveTypebot,
item: localTypebot,
debounceTimeout: autoSaveTimeout,
})
useAutoSave(
{
handler: saveTypebot,
item: localTypebot,
debounceTimeout: autoSaveTimeout,
},
[typebot, publishedTypebot, webhooks]
)

useEffect(() => {
Router.events.on('routeChangeStart', saveTypebot)
return () => {
Router.events.off('routeChangeStart', saveTypebot)
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
}, [typebot, publishedTypebot, webhooks])

const [isSavingLoading, setIsSavingLoading] = useState(false)
const [isPublishing, setIsPublishing] = useState(false)
Expand Down Expand Up @@ -211,7 +214,7 @@ export const TypebotContext = ({
perform: () => saveTypebot(),
},
],
[]
[typebot, publishedTypebot, webhooks]
)

useRegisterActions(
Expand Down Expand Up @@ -366,16 +369,19 @@ export const useFetchedTypebot = ({
}
}

const useAutoSave = <T,>({
handler,
item,
debounceTimeout,
}: {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
handler: (item?: T) => Promise<any>
item?: T
debounceTimeout: number
}) => {
const useAutoSave = <T,>(
{
handler,
item,
debounceTimeout,
}: {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
handler: (item?: T) => Promise<any>
item?: T
debounceTimeout: number
},
dependencies: unknown[]
) => {
const [debouncedItem] = useDebounce(item, debounceTimeout)
useEffect(() => {
const save = () => handler(item)
Expand All @@ -384,7 +390,7 @@ const useAutoSave = <T,>({
document.removeEventListener('visibilitychange', save)
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
}, dependencies)
return useEffect(() => {
handler(item)
// eslint-disable-next-line react-hooks/exhaustive-deps
Expand Down

2 comments on commit 507fe4f

@vercel
Copy link

@vercel vercel bot commented on 507fe4f Mar 2, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

builder-v2 – ./apps/builder

app.typebot.io
builder-v2-git-main-typebot-io.vercel.app
builder-v2-typebot-io.vercel.app

@vercel
Copy link

@vercel vercel bot commented on 507fe4f Mar 2, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.