Files tab: .md → note editor via CheckFileAction + frontend
Backend: - FindByFileID: notes+files JOIN query - LinkFile: INSERT OR IGNORE notes record - CheckFileAction binding: note/preview/external/auto-link Frontend (App.svelte): - Import isMarkdownFile from fileUtils - openPreview now calls CheckFileAction for .md files - .md+note → switch to Notes tab + note editor - .md outside Notes/ → inline preview - non-.md → unchanged Tests: 7 new (FindByFileID×3, CheckFileAction×4), all PASS
This commit is contained in:
+19
-1
@@ -14,7 +14,7 @@
|
||||
import AppHeader from './lib/AppHeader.svelte'
|
||||
import { onMount, onDestroy } from 'svelte'
|
||||
import { actionIcon } from './lib/actionIcons.js'
|
||||
import { canPreviewFile, needsBase64Preview, needsTextPreview } from './lib/fileUtils.js'
|
||||
import { canPreviewFile, needsBase64Preview, needsTextPreview, isMarkdownFile } from './lib/fileUtils.js'
|
||||
import { t } from './lib/i18n'
|
||||
import NoteEditorPanel from './lib/components/notes/NoteEditorPanel.svelte'
|
||||
import InternalLinkPicker from './lib/components/notes/InternalLinkPicker.svelte'
|
||||
@@ -622,6 +622,24 @@
|
||||
// ===== File preview =====
|
||||
|
||||
async function openPreview(item) {
|
||||
// For .md files: check if linked to a note, open note editor instead of preview modal
|
||||
if (item && item.fileId && isMarkdownFile(item)) {
|
||||
try {
|
||||
const action = await wailsCall('CheckFileAction', item.fileId)
|
||||
if (action.action === 'note') {
|
||||
await openNote({ id: action.noteId, title: action.noteTitle })
|
||||
return
|
||||
}
|
||||
if (action.action === 'external') {
|
||||
await wailsCall('OpenFile', item.fileId)
|
||||
return
|
||||
}
|
||||
// 'preview' → fall through to normal preview
|
||||
} catch (e) {
|
||||
console.warn('CheckFileAction failed, falling back to preview:', e)
|
||||
}
|
||||
}
|
||||
|
||||
previewItem = item
|
||||
previewContent = ''
|
||||
previewError = ''
|
||||
|
||||
Reference in New Issue
Block a user