fix: refresh active note after external edits
This commit is contained in:
@@ -92,17 +92,30 @@ describe('refreshPulledVaultState', () => {
|
||||
expect(options.closeAllTabs).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('keeps the active tab mounted while the editor is focused', async () => {
|
||||
it('refreshes the focused active tab when an external watcher update changed that note', async () => {
|
||||
const options = makeOptions({
|
||||
shouldKeepActiveEditorMounted: vi.fn(() => true),
|
||||
})
|
||||
|
||||
await refreshPulledVaultState(options)
|
||||
|
||||
expect(options.shouldKeepActiveEditorMounted).toHaveBeenCalledOnce()
|
||||
expect(options.shouldKeepActiveEditorMounted).not.toHaveBeenCalled()
|
||||
expect(options.reloadVault).toHaveBeenCalledOnce()
|
||||
expect(options.reloadFolders).toHaveBeenCalledOnce()
|
||||
expect(options.reloadViews).toHaveBeenCalledOnce()
|
||||
expect(options.closeAllTabs).toHaveBeenCalledOnce()
|
||||
expect(options.replaceActiveTab).toHaveBeenCalledWith(makeEntry('/vault/active.md', 'Active'))
|
||||
})
|
||||
|
||||
it('keeps the active tab mounted while focused when the active note was not changed', async () => {
|
||||
const options = makeOptions({
|
||||
shouldKeepActiveEditorMounted: vi.fn(() => true),
|
||||
updatedFiles: ['other.md'],
|
||||
})
|
||||
|
||||
await refreshPulledVaultState(options)
|
||||
|
||||
expect(options.shouldKeepActiveEditorMounted).not.toHaveBeenCalled()
|
||||
expect(options.replaceActiveTab).not.toHaveBeenCalled()
|
||||
expect(options.closeAllTabs).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
@@ -71,7 +71,6 @@ function shouldReplaceActiveEntry(options: {
|
||||
activePath: string
|
||||
movedEntry: VaultEntry | null
|
||||
refreshedEntry: VaultEntry | null
|
||||
shouldKeepActiveEditorMounted?: () => boolean
|
||||
updatedFiles: string[]
|
||||
vaultPath: string
|
||||
}): boolean {
|
||||
@@ -79,13 +78,11 @@ function shouldReplaceActiveEntry(options: {
|
||||
activePath,
|
||||
movedEntry,
|
||||
refreshedEntry,
|
||||
shouldKeepActiveEditorMounted,
|
||||
updatedFiles,
|
||||
vaultPath,
|
||||
} = options
|
||||
if (movedEntry) return true
|
||||
if (!refreshedEntry) return false
|
||||
if (shouldKeepActiveEditorMounted?.() === true) return false
|
||||
return didPullUpdateActiveNote({ updatedFiles, vaultPath, activeTabPath: activePath })
|
||||
}
|
||||
|
||||
@@ -99,7 +96,6 @@ export async function refreshPulledVaultState(options: PulledVaultRefreshOptions
|
||||
closeAllTabs,
|
||||
getActiveTabPath,
|
||||
hasUnsavedChanges,
|
||||
shouldKeepActiveEditorMounted,
|
||||
reloadFolders,
|
||||
reloadVault,
|
||||
reloadViews,
|
||||
@@ -131,7 +127,6 @@ export async function refreshPulledVaultState(options: PulledVaultRefreshOptions
|
||||
activePath,
|
||||
movedEntry,
|
||||
refreshedEntry,
|
||||
shouldKeepActiveEditorMounted,
|
||||
updatedFiles,
|
||||
vaultPath,
|
||||
})) {
|
||||
|
||||
Reference in New Issue
Block a user