fix: dont prefetch file contents if it's not editable/viewable (#6632)

This commit is contained in:
Calum H.
2026-07-06 17:06:41 +00:00
committed by GitHub
parent 34228a5b6c
commit 76320f227f
3 changed files with 12 additions and 9 deletions
@@ -118,11 +118,7 @@ import { defineMessages, useVIntl } from '#ui/composables/i18n'
import { injectNotificationManager } from '#ui/providers/web-notifications' import { injectNotificationManager } from '#ui/providers/web-notifications'
import { getFileExtensionIcon } from '#ui/utils/auto-icons' import { getFileExtensionIcon } from '#ui/utils/auto-icons'
import { commonMessages } from '#ui/utils/common-messages' import { commonMessages } from '#ui/utils/common-messages'
import { import { canOpenInFileEditor, getFileExtension } from '#ui/utils/file-extensions'
getFileExtension,
isEditableFile as isEditableFileExt,
isImageFile,
} from '#ui/utils/file-extensions'
import { import {
fileDragActive, fileDragActive,
@@ -303,8 +299,7 @@ const formattedCreationDate = computed(() => {
const isEditableFile = computed(() => { const isEditableFile = computed(() => {
if (props.type === 'file') { if (props.type === 'file') {
const ext = fileExtension.value return canOpenInFileEditor(props.name)
return !props.name.includes('.') || isEditableFileExt(ext) || isImageFile(ext)
} }
return false return false
}) })
@@ -225,7 +225,7 @@ import { useVirtualScroll } from '#ui/composables/virtual-scroll'
import { injectFilePicker } from '#ui/providers/file-picker' import { injectFilePicker } from '#ui/providers/file-picker'
import { injectNotificationManager } from '#ui/providers/web-notifications' import { injectNotificationManager } from '#ui/providers/web-notifications'
import { commonMessages } from '#ui/utils/common-messages' import { commonMessages } from '#ui/utils/common-messages'
import { getFileExtension } from '#ui/utils/file-extensions' import { canOpenInFileEditor, getFileExtension } from '#ui/utils/file-extensions'
import FileEditor from './components/editor/FileEditor.vue' import FileEditor from './components/editor/FileEditor.vue'
import FileContextMenu from './components/FileContextMenu.vue' import FileContextMenu from './components/FileContextMenu.vue'
@@ -650,7 +650,7 @@ function handleItemHover(item: { type: string; path: string; name: string }) {
: `${currentPath}/${item.name}` : `${currentPath}/${item.name}`
ctx.prefetchDirectory?.(navPath) ctx.prefetchDirectory?.(navPath)
}, 150) }, 150)
} else { } else if (canOpenInFileEditor(item.name)) {
prefetchTimeout = setTimeout(() => { prefetchTimeout = setTimeout(() => {
ctx.prefetchFile?.(item.path) ctx.prefetchFile?.(item.path)
}, 150) }, 150)
+8
View File
@@ -89,6 +89,14 @@ export function isEditableFile(ext: string): boolean {
return isCodeFile(ext) || isTextFile(ext) return isCodeFile(ext) || isTextFile(ext)
} }
/**
* Check if a file can be opened in the file editor
*/
export function canOpenInFileEditor(filename: string): boolean {
const ext = getFileExtension(filename)
return !filename.includes('.') || isEditableFile(ext) || isImageFile(ext)
}
/** /**
* Get Ace editor language mode for a file extension * Get Ace editor language mode for a file extension
*/ */