diff --git a/DiscordChatExporter.Gui/Framework/DialogManager.cs b/DiscordChatExporter.Gui/Framework/DialogManager.cs index 930c02c4..0f6a8f86 100644 --- a/DiscordChatExporter.Gui/Framework/DialogManager.cs +++ b/DiscordChatExporter.Gui/Framework/DialogManager.cs @@ -60,7 +60,7 @@ public class DialogManager : IDisposable } ); - return file?.Path.LocalPath; + return file?.TryGetLocalPath() ?? file?.Path.ToString(); } public async Task PromptDirectoryPathAsync(string defaultDirPath = "") @@ -69,19 +69,21 @@ public class DialogManager : IDisposable Application.Current?.ApplicationLifetime?.TryGetTopLevel() ?? throw new ApplicationException("Could not find the top-level visual element."); - var startLocation = await topLevel.StorageProvider.TryGetFolderFromPathAsync( - defaultDirPath - ); - - var folderPickResult = await topLevel.StorageProvider.OpenFolderPickerAsync( + var result = await topLevel.StorageProvider.OpenFolderPickerAsync( new FolderPickerOpenOptions { AllowMultiple = false, - SuggestedStartLocation = startLocation, + SuggestedStartLocation = await topLevel.StorageProvider.TryGetFolderFromPathAsync( + defaultDirPath + ), } ); - return folderPickResult.FirstOrDefault()?.Path.LocalPath; + var directory = result.FirstOrDefault(); + if (directory is null) + return null; + + return directory.TryGetLocalPath() ?? directory.Path.ToString(); } public void Dispose() => _dialogLock.Dispose();