From 3df6717734b543f23b57ed978fb83d60f63312fa Mon Sep 17 00:00:00 2001 From: Christoph Hagen Date: Mon, 17 Feb 2025 15:16:53 +0100 Subject: [PATCH] Improve page content saving --- .../Views/Pages/LocalizedPageContentView.swift | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/CHDataManagement/Views/Pages/LocalizedPageContentView.swift b/CHDataManagement/Views/Pages/LocalizedPageContentView.swift index dec76ba..d0c65b4 100644 --- a/CHDataManagement/Views/Pages/LocalizedPageContentView.swift +++ b/CHDataManagement/Views/Pages/LocalizedPageContentView.swift @@ -7,6 +7,7 @@ enum PageContentSaveStatus { case failedToSave case needsSave case notLoaded + case isSaving var symbol: SFSymbol { switch self { @@ -14,7 +15,7 @@ enum PageContentSaveStatus { return .questionmarkSquareDashed case .isSaved: return .checkmarkCircleFill - case .needsSave: + case .needsSave, .isSaving: return .hourglassCircleFill case .failedToSave: return .exclamationmarkTriangleFill @@ -25,7 +26,7 @@ enum PageContentSaveStatus { switch self { case .isSaved, .notLoaded: return .green - case .needsSave: + case .needsSave, .isSaving: return .yellow case .failedToSave: return .red @@ -92,6 +93,7 @@ struct LocalizedPageContentView: View { return } saveState = .needsSave + lastModification = .now // Wait a few seconds for a save, to allow additional changes // Reduces the number of saves @@ -121,7 +123,7 @@ struct LocalizedPageContentView: View { private func saveContentIfNeeded(isFinalSave: Bool = false) { switch saveState { - case .isSaved, .notLoaded: + case .isSaved, .notLoaded, .isSaving: return default: break @@ -137,6 +139,7 @@ struct LocalizedPageContentView: View { } print("Saving content after 30 seconds of modifications") } + saveState = .isSaving saveUnconditionally() } @@ -157,7 +160,9 @@ struct LocalizedPageContentView: View { saveState = .failedToSave return } + saveState = .isSaved + lastSave = .now checkContent() }