From 57fa5aa3ddccb385959b8b4b8086b841628085b8 Mon Sep 17 00:00:00 2001 From: Christoph Hagen Date: Thu, 8 Jan 2026 22:40:25 +0100 Subject: [PATCH] Fix file metadata save --- CHDataManagement/Model/FileType.swift | 7 +++++++ CHDataManagement/Views/Files/AddFileView.swift | 3 +++ CHDataManagement/Views/Files/FileDetailView.swift | 3 +++ 3 files changed, 13 insertions(+) diff --git a/CHDataManagement/Model/FileType.swift b/CHDataManagement/Model/FileType.swift index adab248..045db3d 100644 --- a/CHDataManagement/Model/FileType.swift +++ b/CHDataManagement/Model/FileType.swift @@ -235,3 +235,10 @@ enum FileType: String { } } } + +extension FileType: CustomStringConvertible { + + var description: String { + rawValue + } +} diff --git a/CHDataManagement/Views/Files/AddFileView.swift b/CHDataManagement/Views/Files/AddFileView.swift index 9446b4d..b93ffb8 100644 --- a/CHDataManagement/Views/Files/AddFileView.swift +++ b/CHDataManagement/Views/Files/AddFileView.swift @@ -108,6 +108,9 @@ struct AddFileView: View { content.add(resource) selectedFile = resource } + // We need to ensure that the metadata file is written to disk directly + content.saveUnconditionally() + content.generateMissingVideoThumbnails() dismiss() } diff --git a/CHDataManagement/Views/Files/FileDetailView.swift b/CHDataManagement/Views/Files/FileDetailView.swift index 432f60a..f97a851 100644 --- a/CHDataManagement/Views/Files/FileDetailView.swift +++ b/CHDataManagement/Views/Files/FileDetailView.swift @@ -181,6 +181,7 @@ struct FileDetailView: View { markFileAsChanged() if file.isExternallyStored { DispatchQueue.main.async { + // This will also trigger a save file.isExternallyStored = false } } @@ -215,6 +216,7 @@ struct FileDetailView: View { return } DispatchQueue.main.async { + // This will also trigger a save file.fileSize = nil file.isExternallyStored = true } @@ -225,6 +227,7 @@ struct FileDetailView: View { print("File '\(file.identifier)': Failed to delete file in content folder") return } + // This will also trigger a save content.remove(file) selection.remove(file) }