Browse Source

1.Update UI
2.Add retry logic in libfisp.

Merge branch 'master' of http://git.ius.plus/Project-Wing/fisp

# Conflicts:
# fisp/MainWindow.xaml.cs

Justin 1 year ago
parent
commit
f50433397d
2 changed files with 79 additions and 11 deletions
  1. 9 0
      fisp/MainWindow.xaml.cs
  2. 70 11
      fisp/PackageHandler.cs

+ 9 - 0
fisp/MainWindow.xaml.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Diagnostics;
+using System.IO;
 using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Controls;
@@ -99,6 +100,14 @@ namespace fisp
             libfisp.fisp publisher = new libfisp.fisp();
             try
             {
+                var folder = IsEmbedded ? _packageHandler.DistFolder : Path.Combine(_packageHandler.DistFolder, "upload_temp");
+                if (!IsEmbedded)
+                {
+                    //  TODO: 由于asset版本控制问题暂未解决,public先本地加载assets, 不上传
+                    PackageHandler.CreateCleanFolder(folder);
+                    PackageHandler.CopyDirectory(_packageHandler.DistFolder, folder);
+                    Directory.Delete(Path.Combine(folder, "assets"), true);
+                }
                 var task = publisher.UploadDir(_packageHandler.DistFolder, _packageHandler.FullBuildName);
                 task.UploadingProgress += (s, e) =>
                 {

+ 70 - 11
fisp/PackageHandler.cs

@@ -73,9 +73,11 @@ namespace fisp
 
             if (IsEmbedded)
             {
-               await UnzipGoogleFonts();
+                await UnzipGoogleFonts();
             }
 
+            //await GenerateVersionFolder();
+
             await Task.Delay(1000);
 
             await UpdateMainDartJs();
@@ -108,9 +110,10 @@ namespace fisp
                     }
                     using (ZipArchive archive = ZipFile.Open(fileName, ZipArchiveMode.Create))
                     {
-                        var entryName = "index.html";
-                        var sourcePath = Path.Combine(DistFolder, entryName);
-                        archive.CreateEntryFromFile(sourcePath, entryName);
+                        AddFileToZip(archive, Path.Combine(DistFolder, "index.html"));
+                        AddFileToZip(archive, Path.Combine(DistFolder, "flutter_service_worker.js"));
+
+                        AddFolderToZip(archive, Path.Combine(DistFolder, "assets"));
                     }
                 }
             });
@@ -155,11 +158,6 @@ namespace fisp
                 .Replace("href=\"flyinsono.ico", $"href=\"{staticRoot}flyinsono.ico")
                 .Replace("window.STATIC_ROOT = './';", $"window.STATIC_ROOT = '{staticRoot}';");
 
-            if (!IsEmbedded)
-            {
-                content = content.Replace("base href=\"/\"", $"base href=\"{staticRoot}\"");
-            }
-
             File.Delete(filePath);
 
             using (var fs = new FileStream(filePath, FileMode.CreateNew, FileAccess.Write, FileShare.None))
@@ -169,6 +167,38 @@ namespace fisp
             }
         }
 
+        private async Task GenerateVersionFolder()
+        {
+            // TODO: 支持asset自定义root后,拷贝Version文件夹
+            await Task.Run(() =>
+            {
+                var versionFolder = Path.Combine(DistFolder, FullBuildName);
+                CreateCleanFolder(versionFolder);
+
+                if (IsEmbedded)
+                {
+                    FillEmbeddedVersionFolder(versionFolder);
+                }
+                else
+                {
+                    FillPublicVersionFolder(versionFolder);
+                }
+            });
+        }
+
+        private void FillEmbeddedVersionFolder(string folder)
+        {
+
+        }
+
+        private void FillPublicVersionFolder(string folder)
+        {
+            var assetsFoloder = Path.Combine(DistFolder, "assets");
+            var assetsDistFolder = Path.Combine(folder, "assets");
+            CreateCleanFolder(assetsDistFolder);
+            CopyDirectory(assetsFoloder, assetsDistFolder);
+        }
+
         private async Task UnzipGoogleFonts()
         {
             await Task.Run(() =>
@@ -186,7 +216,32 @@ namespace fisp
             _versionModel = JsonSerializer.Deserialize<FlutterVersionModel>(jsonText);
         }
 
-        private static void CreateCleanFolder(string folder)
+        private static void AddFolderToZip(ZipArchive archive, string folder, string? rootFolder = null)
+        {
+            var root = rootFolder ?? Path.GetDirectoryName(folder);
+            var subStrIndex = root.Length + 1;
+            DirectoryInfo d = new DirectoryInfo(folder);
+            FileInfo[] files = d.GetFiles("*");
+            foreach (FileInfo file in files)
+            {
+                var targetFolder = file.FullName.Substring(subStrIndex);
+                archive.CreateEntryFromFile(file.FullName, targetFolder);
+            }
+
+            DirectoryInfo[] directories = d.GetDirectories();
+            foreach (DirectoryInfo directory in directories)
+            {
+                AddFolderToZip(archive, directory.FullName, root);
+            }
+        }
+
+        private static void AddFileToZip(ZipArchive archive, string path)
+        {
+            var entryName = Path.GetFileName(path);
+            archive.CreateEntryFromFile(path, entryName);
+        }
+
+        public static void CreateCleanFolder(string folder)
         {
             if (Directory.Exists(folder))
             {
@@ -210,7 +265,7 @@ namespace fisp
             }
         }
 
-        private static void CopyDirectory(string sourceDirectory, string targetDirectory)
+        public static void CopyDirectory(string sourceDirectory, string targetDirectory)
         {
             // 创建目标文件夹
             Directory.CreateDirectory(targetDirectory);
@@ -232,6 +287,10 @@ namespace fisp
             // 递归拷贝子文件夹
             foreach (string directory in directories)
             {
+                if (directory.Equals(targetDirectory))
+                {
+                    continue;
+                }
                 string directoryName = Path.GetFileName(directory);
                 string targetSubDirectory = Path.Combine(targetDirectory, directoryName);
                 CopyDirectory(directory, targetSubDirectory);