diff --git a/Tranga/TrangaSettings.cs b/Tranga/TrangaSettings.cs index 54d4d930..99925592 100644 --- a/Tranga/TrangaSettings.cs +++ b/Tranga/TrangaSettings.cs @@ -98,14 +98,13 @@ public static void UpdateAprilFoolsMode(bool enabled) public static void UpdateDownloadLocation(string newPath, bool moveFiles = true) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - Directory.CreateDirectory(newPath, - GroupRead | GroupWrite | None | OtherRead | OtherWrite | UserRead | UserWrite); + Directory.CreateDirectory(newPath, GroupRead | GroupWrite | None | OtherRead | OtherWrite | UserRead | UserWrite); else Directory.CreateDirectory(newPath); - if (moveFiles && Directory.Exists(TrangaSettings.downloadLocation)) - Directory.Move(TrangaSettings.downloadLocation, newPath); - + if (moveFiles) + MoveContentsOfDirectoryTo(TrangaSettings.downloadLocation, newPath); + TrangaSettings.downloadLocation = newPath; ExportSettings(); } @@ -113,15 +112,38 @@ public static void UpdateDownloadLocation(string newPath, bool moveFiles = true) public static void UpdateWorkingDirectory(string newPath) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - Directory.CreateDirectory(newPath, - GroupRead | GroupWrite | None | OtherRead | OtherWrite | UserRead | UserWrite); + Directory.CreateDirectory(newPath, GroupRead | GroupWrite | None | OtherRead | OtherWrite | UserRead | UserWrite); else Directory.CreateDirectory(newPath); - Directory.Move(TrangaSettings.workingDirectory, newPath); + + MoveContentsOfDirectoryTo(TrangaSettings.workingDirectory, newPath); + TrangaSettings.workingDirectory = newPath; ExportSettings(); } + private static void MoveContentsOfDirectoryTo(string oldDir, string newDir) + { + string[] directoryPaths = Directory.GetDirectories(oldDir); + string[] filePaths = Directory.GetFiles(oldDir); + foreach (string file in filePaths) + { + string newPath = Path.Join(newDir, Path.GetFileName(file)); + File.Move(file, newPath, true); + } + foreach(string directory in directoryPaths) + { + string? dirName = Path.GetDirectoryName(directory); + if(dirName is null) + continue; + string newPath = Path.Join(newDir, dirName); + if(Directory.Exists(newPath)) + MoveContentsOfDirectoryTo(directory, newPath); + else + Directory.Move(directory, newPath); + } + } + public static void UpdateUserAgent(string? customUserAgent) { TrangaSettings.userAgent = customUserAgent ?? DefaultUserAgent;