From ed4bdb5b3340e3ca7db9801f54def0fbfaf51588 Mon Sep 17 00:00:00 2001
From: glax <johanna@bernloehr.eu>
Date: Wed, 21 Jun 2023 18:04:12 +0200
Subject: [PATCH] TrangaSettings export after change

---
 Tranga/TaskManager.cs    |  4 +---
 Tranga/TrangaSettings.cs | 24 ++++++++++++++++++++++++
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/Tranga/TaskManager.cs b/Tranga/TaskManager.cs
index 5f32425..347511e 100644
--- a/Tranga/TaskManager.cs
+++ b/Tranga/TaskManager.cs
@@ -363,9 +363,7 @@ public class TaskManager
     private void ExportDataAndSettings()
     {
         logger?.WriteLine(this.GetType().ToString(), $"Exporting settings to {settings.settingsFilePath}");
-        while(IsFileInUse(settings.settingsFilePath))
-            Thread.Sleep(50);
-        File.WriteAllText(settings.settingsFilePath, JsonConvert.SerializeObject(settings));
+        settings.ExportSettings();
         
         logger?.WriteLine(this.GetType().ToString(), $"Exporting tasks to {settings.tasksFilePath}");
         while(IsFileInUse(settings.tasksFilePath))
diff --git a/Tranga/TrangaSettings.cs b/Tranga/TrangaSettings.cs
index 161a055..19a1c3e 100644
--- a/Tranga/TrangaSettings.cs
+++ b/Tranga/TrangaSettings.cs
@@ -43,6 +43,29 @@ public class TrangaSettings
         return settings;
     }
 
+    public void ExportSettings()
+    {
+        if (File.Exists(settingsFilePath))
+        {
+            bool inUse = true;
+            while (inUse)
+            {
+                try
+                {
+                    using FileStream stream = new (settingsFilePath, FileMode.Open, FileAccess.Read, FileShare.None);
+                    stream.Close();
+                    inUse = false;
+                }
+                catch (IOException)
+                {
+                    inUse = true;
+                    Thread.Sleep(50);
+                }
+            }
+        }
+        File.WriteAllText(settingsFilePath, JsonConvert.SerializeObject(this));
+    }
+
     public void UpdateSettings(UpdateField field, Logger? logger = null, params string[] values) 
     {
         switch (field)
@@ -81,6 +104,7 @@ public class TrangaSettings
                 newLunaSea.SendNotification("Success!", "LunaSea was added to Tranga!");
                 break;
         }
+        ExportSettings();
     }
     
     public enum UpdateField { DownloadLocation, Komga, Kavita, Gotify, LunaSea}