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) {
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 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)
}
func remove(_ file: FileResource) {
if images.contains(file) {
images.remove(file)
}
remove(linkPreviewImage: file)
}
}
extension LocalizedPost: LinkPreviewItem {

View File

@ -156,6 +156,14 @@ final class Page: Item {
func hasContent(in language: ContentLanguage) -> Bool {
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 {

View File

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

View File

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

View File

@ -57,6 +57,24 @@ final class PageSettings: ObservableObject {
german: german.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 {

View File

@ -62,6 +62,18 @@ final class PostSettings: ObservableObject {
german: german.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 {

View File

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

View File

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