Skip to content

Commit c189336

Browse files
committed
Fix possible directory not found issue when saving storage
1 parent 7910ab3 commit c189336

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

Flow.Launcher.Infrastructure/Storage/BinaryStorage.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ private static async ValueTask<T> DeserializeAsync(Stream stream, T defaultData)
8282

8383
public void Save()
8484
{
85+
FilesFolders.ValidateDirectory(DirectoryPath); // User may delete the directory, so we need to check it
8586
var serialized = MemoryPackSerializer.Serialize(Data);
86-
8787
File.WriteAllBytes(FilePath, serialized);
8888
}
8989

@@ -103,6 +103,7 @@ public void ClearData()
103103
// so we need to pass it to SaveAsync
104104
public async ValueTask SaveAsync(T data)
105105
{
106+
FilesFolders.ValidateDirectory(DirectoryPath); // User may delete the directory, so we need to check it
106107
await using var stream = new FileStream(FilePath, FileMode.Create);
107108
await MemoryPackSerializer.SerializeAsync(stream, data);
108109
}

Flow.Launcher.Infrastructure/Storage/JsonStorage.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,10 @@ private void BackupOriginFile()
183183

184184
public void Save()
185185
{
186-
string serialized = JsonSerializer.Serialize(Data,
186+
// User may delete the directory, so we need to check it
187+
FilesFolders.ValidateDirectory(DirectoryPath);
188+
189+
var serialized = JsonSerializer.Serialize(Data,
187190
new JsonSerializerOptions { WriteIndented = true });
188191

189192
File.WriteAllText(TempFilePath, serialized);
@@ -193,6 +196,9 @@ public void Save()
193196

194197
public async Task SaveAsync()
195198
{
199+
// User may delete the directory, so we need to check it
200+
FilesFolders.ValidateDirectory(DirectoryPath);
201+
196202
await using var tempOutput = File.OpenWrite(TempFilePath);
197203
await JsonSerializer.SerializeAsync(tempOutput, Data,
198204
new JsonSerializerOptions { WriteIndented = true });

0 commit comments

Comments
 (0)