mirror of
				https://github.com/Kareadita/Kavita.git
				synced 2025-10-31 18:47:05 -04:00 
			
		
		
		
	# Added - Added: Added a new button on admin dashboard to clear cache for the whole server # Changed - Changed: Moved the download logs to the new System page - Changed: Tag Badges now show the correct cursor to help indication actions. For example, Collection badges on series detail page can be clicked, while type cannot. # Fixed - Fixed: Fixed an issue in develop builds where Pagination no longer worked due to Header not being exposed - Fixed: After Scanning a series, clear out any cached chapters ======================================================= * After Scanning a series, clear out any cached chapters. * Implemented cursor overrides for tag badges * Fixed pagination no longer working due to Pagination header not being able to be read from the UI. * Fixed some css things with icons within tagbadges not taking the selection mode styling * Moved download logs button to the system page * Implemented the ability to clear cache for the whole server from admin dashboard * Removed debug code * Up the Regex Timeout for the Github Build System
		
			
				
	
	
		
			87 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.IO;
 | |
| using System.Linq;
 | |
| using API.Comparators;
 | |
| 
 | |
| namespace API.Extensions
 | |
| {
 | |
|     public static class DirectoryInfoExtensions
 | |
|     {
 | |
|         private static readonly NaturalSortComparer Comparer = new NaturalSortComparer();
 | |
|         public static void Empty(this DirectoryInfo directory)
 | |
|         {
 | |
|           // NOTE: We have this in DirectoryService.Empty(), do we need this here?
 | |
|           foreach(FileInfo file in directory.EnumerateFiles()) file.Delete();
 | |
|           foreach(DirectoryInfo subDirectory in directory.EnumerateDirectories()) subDirectory.Delete(true);
 | |
|         }
 | |
| 
 | |
|         public static void RemoveNonImages(this DirectoryInfo directory)
 | |
|         {
 | |
|           foreach (var file in directory.EnumerateFiles())
 | |
|           {
 | |
|             if (!Parser.Parser.IsImage(file.FullName))
 | |
|             {
 | |
|               file.Delete();
 | |
|             }
 | |
|           }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Flattens all files in subfolders to the passed directory recursively.
 | |
|         ///
 | |
|         ///
 | |
|         /// foo<para />
 | |
|         /// ├── 1.txt<para />
 | |
|         /// ├── 2.txt<para />
 | |
|         /// ├── 3.txt<para />
 | |
|         /// ├── 4.txt<para />
 | |
|         /// └── bar<para />
 | |
|         ///     ├── 1.txt<para />
 | |
|         ///     ├── 2.txt<para />
 | |
|         ///     └── 5.txt<para />
 | |
|         ///
 | |
|         /// becomes:<para />
 | |
|         /// foo<para />
 | |
|         /// ├── 1.txt<para />
 | |
|         /// ├── 2.txt<para />
 | |
|         /// ├── 3.txt<para />
 | |
|         /// ├── 4.txt<para />
 | |
|         ///     ├── bar_1.txt<para />
 | |
|         ///     ├── bar_2.txt<para />
 | |
|         ///     └── bar_5.txt<para />
 | |
|         /// </summary>
 | |
|         /// <param name="directory"></param>
 | |
|         public static void Flatten(this DirectoryInfo directory)
 | |
|         {
 | |
|             var index = 0;
 | |
|             FlattenDirectory(directory, directory, ref index);
 | |
|         }
 | |
| 
 | |
|         private static void FlattenDirectory(DirectoryInfo root, DirectoryInfo directory, ref int directoryIndex)
 | |
|         {
 | |
|             if (!root.FullName.Equals(directory.FullName))
 | |
|             {
 | |
|                 var fileIndex = 1;
 | |
| 
 | |
|                 foreach (var file in directory.EnumerateFiles().OrderBy(file => file.FullName, Comparer))
 | |
|                 {
 | |
|                     if (file.Directory == null) continue;
 | |
|                     var paddedIndex = Parser.Parser.PadZeros(directoryIndex + "");
 | |
|                     // We need to rename the files so that after flattening, they are in the order we found them
 | |
|                     var newName = $"{paddedIndex}_{Parser.Parser.PadZeros(fileIndex + "")}{file.Extension}";
 | |
|                     var newPath = Path.Join(root.FullName, newName);
 | |
|                     if (!File.Exists(newPath)) file.MoveTo(newPath);
 | |
|                     fileIndex++;
 | |
|                 }
 | |
| 
 | |
|                 directoryIndex++;
 | |
|             }
 | |
| 
 | |
|             foreach (var subDirectory in directory.EnumerateDirectories())
 | |
|             {
 | |
|                 FlattenDirectory(root, subDirectory, ref directoryIndex);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |