fix: block frontmatter writes for attachments

This commit is contained in:
lucaronin
2026-04-30 05:37:58 +02:00
parent 388d389ba4
commit bc56eec35e
3 changed files with 90 additions and 21 deletions

View File

@@ -634,6 +634,29 @@ Status: Active
expect(onInit).toHaveBeenCalledWith('/vault/plain-note.md')
})
it('does not offer frontmatter initialization for binary attachments', () => {
const onInit = vi.fn()
const attachmentEntry: VaultEntry = {
...noFrontmatterEntry,
path: '/vault/attachments/screenshot.png',
filename: 'screenshot.png',
title: 'screenshot.png',
fileKind: 'binary',
}
render(
<Inspector
{...defaultProps}
entry={attachmentEntry}
content=""
onInitializeProperties={onInit}
/>
)
expect(screen.queryByText('Initialize properties')).not.toBeInTheDocument()
expect(onInit).not.toHaveBeenCalled()
})
it('shows invalid frontmatter notice with fix button', () => {
render(
<Inspector

View File

@@ -48,6 +48,10 @@ function buildTypeEntryMap(entries: VaultEntry[]): Record<string, VaultEntry> {
return map
}
function supportsFrontmatter(entry: VaultEntry): boolean {
return entry.fileKind === undefined || entry.fileKind === 'markdown'
}
function ValidFrontmatterPanels({
entry,
entries,
@@ -212,24 +216,26 @@ function InspectorBody({
return (
<>
<PrimaryInspectorPanel
entry={entry}
frontmatterState={frontmatterState}
frontmatter={frontmatter}
entries={entries}
typeEntryMap={typeEntryMap}
vaultPath={vaultPath}
referencedBy={referencedBy}
onNavigate={onNavigate}
onToggleRawEditor={onToggleRawEditor}
onInitializeProperties={onInitializeProperties}
onCreateAndOpenNote={onCreateAndOpenNote}
onUpdateProperty={onUpdateFrontmatter ? handleUpdateProperty : undefined}
onDeleteProperty={onDeleteProperty ? handleDeleteProperty : undefined}
onAddProperty={onAddProperty ? handleAddProperty : undefined}
onCreateMissingType={onCreateMissingType ? handleCreateMissingType : undefined}
locale={locale}
/>
{supportsFrontmatter(entry) && (
<PrimaryInspectorPanel
entry={entry}
frontmatterState={frontmatterState}
frontmatter={frontmatter}
entries={entries}
typeEntryMap={typeEntryMap}
vaultPath={vaultPath}
referencedBy={referencedBy}
onNavigate={onNavigate}
onToggleRawEditor={onToggleRawEditor}
onInitializeProperties={onInitializeProperties}
onCreateAndOpenNote={onCreateAndOpenNote}
onUpdateProperty={onUpdateFrontmatter ? handleUpdateProperty : undefined}
onDeleteProperty={onDeleteProperty ? handleDeleteProperty : undefined}
onAddProperty={onAddProperty ? handleAddProperty : undefined}
onCreateMissingType={onCreateMissingType ? handleCreateMissingType : undefined}
locale={locale}
/>
)}
{backlinks.length > 0 && <Separator />}
<BacklinksPanel backlinks={backlinks} onNavigate={onNavigate} />
<Separator />