diff --git a/apps/studio/components/ui/EditorPanel/EditorPanel.tsx b/apps/studio/components/ui/EditorPanel/EditorPanel.tsx
index 0aa1a7f94ea..ae2385d04ae 100644
--- a/apps/studio/components/ui/EditorPanel/EditorPanel.tsx
+++ b/apps/studio/components/ui/EditorPanel/EditorPanel.tsx
@@ -56,6 +56,7 @@ import { useContentIdQuery } from '@/data/content/content-id-query'
import { useContentQuery, type Content } from '@/data/content/content-query'
import { useContentUpsertMutation } from '@/data/content/content-upsert-mutation'
import { contentKeys } from '@/data/content/keys'
+import type { Snippet } from '@/data/content/sql-folders-query'
import { useExecuteSqlMutation } from '@/data/sql/execute-sql-mutation'
import { applyAutoLimit } from '@/data/sql/utils'
import { useSelectedOrganizationQuery } from '@/hooks/misc/useSelectedOrganization'
@@ -66,6 +67,7 @@ import { editorPanelState, useEditorPanelStateSnapshot } from '@/state/editor-pa
import { SHORTCUT_IDS } from '@/state/shortcuts/registry'
import { useIsShortcutEnabled } from '@/state/shortcuts/useIsShortcutEnabled'
import { useSidebarManagerSnapshot } from '@/state/sidebar-manager-state'
+import { useSqlEditorSaveCoordinator } from '@/state/sql-editor/sql-editor-save-coordinator'
import { useSqlEditorV2StateSnapshot } from '@/state/sql-editor/sql-editor-state'
export const EditorPanel = () => {
@@ -86,6 +88,7 @@ export const EditorPanel = () => {
const { profile } = useProfile()
const { closeSidebar } = useSidebarManagerSnapshot()
const sqlEditorSnap = useSqlEditorV2StateSnapshot()
+ const { requestSave } = useSqlEditorSaveCoordinator()
const isExplorerEnabled = useIsExplorerEnabled()
const { createQuery } = useCreateQuery()
const queryClient = useQueryClient()
@@ -194,6 +197,14 @@ export const EditorPanel = () => {
if (vars.payload.id && ref) {
queryClient.invalidateQueries({ queryKey: contentKeys.resource(ref, vars.payload.id) })
}
+ if (activeSnippet) {
+ const updatedSnippet = { ...activeSnippet, content: vars.payload.content }
+ sqlEditorSnap.updateSnippet({
+ id: activeSnippet.id,
+ snippet: updatedSnippet as unknown as Snippet,
+ skipSave: true,
+ })
+ }
originalSnippetRef.current = { sql: currentValue, name: vars.payload.name }
showSaveSuccess()
},
@@ -301,7 +312,7 @@ export const EditorPanel = () => {
})
sqlEditorSnap.addSnippet({ projectRef: ref, snippet })
- sqlEditorSnap.addNeedsSaving(snippet.id)
+ requestSave(snippet.id)
router.push(`/project/${ref}/sql/${snippet.id}`)
handleClosePanel()
@@ -313,6 +324,7 @@ export const EditorPanel = () => {
{isEditingTitle ? (
setTitleInput(e.target.value)}
onBlur={commitRename}
@@ -674,7 +686,7 @@ export const EditorPanel = () => {
project_id: project.id,
})
sqlEditorSnap.addSnippet({ projectRef: ref, snippet })
- sqlEditorSnap.addNeedsSaving(snippet.id)
+ requestSave(snippet.id)
setActiveSnippet(snippet as unknown as Extract)
originalSnippetRef.current = { sql: currentValue, name }
showSaveSuccess()