Fix file deletion

This commit is contained in:
Christoph Hagen 2025-01-07 14:04:00 +01:00
parent c5a00ef0f8
commit acd0902869
10 changed files with 98 additions and 3 deletions

View File

@ -123,6 +123,22 @@ final class Content: ObservableObject {
func remove(_ file: FileResource) { func remove(_ file: FileResource) {
files.remove(file) files.remove(file)
#warning("Remove file from required files, thumbnails, post images, etc.") for post in posts {
post.remove(file)
}
for page in pages {
page.remove(file)
}
for tag in tags {
tag.remove(file)
}
settings.remove(file)
#warning("Remove MainView.selectedFile when deleting file")
}
func file(withOutputPath: String) -> FileResource? {
files.first { $0.absoluteUrl == withOutputPath }
} }
} }

View File

@ -1,9 +1,18 @@
protocol LinkPreviewItem { protocol LinkPreviewItem: AnyObject {
var linkPreviewImage: FileResource? { get } var linkPreviewImage: FileResource? { get set }
var linkPreviewTitle: String? { get } var linkPreviewTitle: String? { get }
var linkPreviewDescription: String? { get } var linkPreviewDescription: String? { get }
} }
extension LinkPreviewItem {
func remove(linkPreviewImage file: FileResource) {
if linkPreviewImage == file {
linkPreviewImage = nil
}
}
}

View File

@ -79,6 +79,13 @@ final class LocalizedPost: ObservableObject {
} }
return text.contains(string) return text.contains(string)
} }
func remove(_ file: FileResource) {
if images.contains(file) {
images.remove(file)
}
remove(linkPreviewImage: file)
}
} }
extension LocalizedPost: LinkPreviewItem { extension LocalizedPost: LinkPreviewItem {

View File

@ -156,6 +156,14 @@ final class Page: Item {
func hasContent(in language: ContentLanguage) -> Bool { func hasContent(in language: ContentLanguage) -> Bool {
content.storage.hasPageContent(for: id, language: language) content.storage.hasPageContent(for: id, language: language)
} }
func remove(_ file: FileResource) {
if requiredFiles.contains(file) {
requiredFiles.remove(file)
}
english.remove(linkPreviewImage: file)
german.remove(linkPreviewImage: file)
}
} }
extension Page: DateItem { extension Page: DateItem {

View File

@ -135,6 +135,11 @@ final class Post: Item {
id = newId id = newId
return true return true
} }
func remove(_ file: FileResource) {
english.remove(file)
german.remove(file)
}
} }
extension Post: DateItem { extension Post: DateItem {

View File

@ -51,6 +51,15 @@ final class AudioPlayerSettings: ObservableObject {
german: german.file, german: german.file,
english: english.file) english: english.file)
} }
func remove(_ file: FileResource) {
if audioPlayerJsFile == file {
audioPlayerJsFile = nil
}
if audioPlayerCssFile == file {
audioPlayerCssFile = nil
}
}
} }
extension AudioPlayerSettings { extension AudioPlayerSettings {

View File

@ -57,6 +57,24 @@ final class PageSettings: ObservableObject {
german: german.file, german: german.file,
english: english.file) english: english.file)
} }
func remove(_ file: FileResource) {
if codeHighlightingJsFile == file {
codeHighlightingJsFile = nil
}
if modelViewerJsFile == file {
modelViewerJsFile = nil
}
if defaultCssFile == file {
defaultCssFile = nil
}
if imageCompareJsFile == file {
imageCompareJsFile = nil
}
if imageCompareCssFile == file {
imageCompareCssFile = nil
}
}
} }
extension PageSettings: LocalizedItem { extension PageSettings: LocalizedItem {

View File

@ -62,6 +62,18 @@ final class PostSettings: ObservableObject {
german: german.file, german: german.file,
english: english.file) english: english.file)
} }
func remove(_ file: FileResource) {
if swiperJsFile == file {
swiperJsFile = nil
}
if swiperCssFile == file {
swiperCssFile = nil
}
if defaultCssFile == file {
defaultCssFile = nil
}
}
} }
extension PostSettings { extension PostSettings {

View File

@ -48,6 +48,12 @@ final class Settings: ObservableObject {
audioPlayer: audioPlayer.file, audioPlayer: audioPlayer.file,
tagOverview: tagOverview?.file) tagOverview: tagOverview?.file)
} }
func remove(_ file: FileResource) {
pages.remove(file)
posts.remove(file)
audioPlayer.remove(file)
}
} }
extension Settings { extension Settings {

View File

@ -66,6 +66,11 @@ final class Tag: Item {
func contains(urlComponent: String) -> Bool { func contains(urlComponent: String) -> Bool {
german.urlComponent == urlComponent || english.urlComponent == urlComponent german.urlComponent == urlComponent || english.urlComponent == urlComponent
} }
func remove(_ file: FileResource) {
english.remove(linkPreviewImage: file)
german.remove(linkPreviewImage: file)
}
} }
extension Tag: LocalizedItem { extension Tag: LocalizedItem {