|
@@ -3,6 +3,7 @@ using System.Diagnostics;
|
|
|
using System.Threading.Tasks;
|
|
|
using System.Windows;
|
|
|
using System.Windows.Controls;
|
|
|
+using System.Windows.Input;
|
|
|
using WindowsAPICodePack.Dialogs;
|
|
|
|
|
|
namespace fisp
|
|
@@ -12,7 +13,7 @@ namespace fisp
|
|
|
/// </summary>
|
|
|
public partial class MainWindow : Window
|
|
|
{
|
|
|
- private PackageHandler? packageHandler;
|
|
|
+ private PackageHandler? _packageHandler;
|
|
|
public bool IsEmbedded => ComboBoxChannel.SelectedIndex == 0;
|
|
|
|
|
|
public MainWindow()
|
|
@@ -22,12 +23,8 @@ namespace fisp
|
|
|
UploadingProgress.Maximum = 100;
|
|
|
TotalProgress.Minimum = 0;
|
|
|
TotalProgress.Maximum = 100;
|
|
|
- ComboBoxChannel.SelectedIndex = 0;
|
|
|
- PublishUrl.Text = $"https://app.fis.plus/{PackageName.Text}/index.html";
|
|
|
- }
|
|
|
-
|
|
|
- private void OnLoaded(object sender, RoutedEventArgs e)
|
|
|
- {
|
|
|
+ TopPanel.SelectionChanged += OnTabControlSelectionChanged;
|
|
|
+ ComboBoxChannel.SelectionChanged += OnChannelSelectionChanged;
|
|
|
}
|
|
|
|
|
|
private void OnChooseSourceFolderClick(object sender, RoutedEventArgs e)
|
|
@@ -39,47 +36,70 @@ namespace fisp
|
|
|
if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
|
|
|
{
|
|
|
SourceFolder.Text = dialog.FileName;
|
|
|
- packageHandler = new PackageHandler(SourceFolder.Text, IsEmbedded);
|
|
|
- PackageName.Text = packageHandler.FullBuildName;
|
|
|
- HidePublishPanel();
|
|
|
- PackageConsole.Visibility = Visibility.Collapsed;
|
|
|
+ _packageHandler = new PackageHandler(SourceFolder.Text, IsEmbedded);
|
|
|
+ PackageName.Text = _packageHandler.FullBuildName;
|
|
|
+ PackageFolder.Visibility = Visibility.Collapsed;
|
|
|
+ if(_packageHandler.FullBuildName == "Error!")
|
|
|
+ {
|
|
|
+ _packageHandler = null;
|
|
|
+ PackageButton.IsEnabled = false;
|
|
|
+ ResetPublishStep();
|
|
|
+ PublishStep2.IsEnabled = false;
|
|
|
+ MessageBox.Show(this, $"Please choose correct flutter web folder!", "Choose folder", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ PackageButton.IsEnabled = true;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private async void OnPackageClick(object sender, RoutedEventArgs e)
|
|
|
+ private void OnPackageClick(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
- if (packageHandler == null)
|
|
|
+ if (_packageHandler == null)
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
- ShowBusy();
|
|
|
-
|
|
|
- await packageHandler.Handle();
|
|
|
-
|
|
|
- await packageHandler.GenerateZip();
|
|
|
-
|
|
|
- PackageConsole.Visibility = Visibility.Visible;
|
|
|
- PackageConsole.Text = $"Success! Dist folder: {PackageHandler.WORKSPACE}";
|
|
|
+ BusyIndicator.IsBusy = true;
|
|
|
+ BusyIndicator.BusyContent = "Packaging...";
|
|
|
|
|
|
- if (!IsEmbedded)
|
|
|
+ Task.Run(async () =>
|
|
|
{
|
|
|
- ShowPublishPanel();
|
|
|
- }
|
|
|
+ try
|
|
|
+ {
|
|
|
+ await _packageHandler.Handle();
|
|
|
+ await _packageHandler.GenerateZip();
|
|
|
+ Dispatcher.Invoke(() =>
|
|
|
+ {
|
|
|
+ PackageFolder.Visibility = Visibility.Visible;
|
|
|
+ PackageFolder.Text = PackageHandler.WORKSPACE;
|
|
|
+ BusyIndicator.IsBusy = false;
|
|
|
+ if (!IsEmbedded)
|
|
|
+ {
|
|
|
+ PublishButton.IsEnabled = true;
|
|
|
+ }
|
|
|
+ MessageBox.Show(this, "Package successed!", "Package result", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ BusyIndicator.IsBusy = false;
|
|
|
+ MessageBox.Show(this, $"Package failed! \n\n {ex.Message}", "Package result", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
+ }
|
|
|
|
|
|
- HideBusy();
|
|
|
+ });
|
|
|
|
|
|
- MessageBox.Show("Package successed!", "Package result", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
}
|
|
|
|
|
|
private void OnPlulishClick(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
- if (packageHandler == null) return;
|
|
|
+ if (_packageHandler == null) return;
|
|
|
|
|
|
LockActions();
|
|
|
libfisp.fisp publisher = new libfisp.fisp();
|
|
|
try
|
|
|
{
|
|
|
- var task = publisher.UploadDir(packageHandler.DistFolder, packageHandler.FullBuildName);
|
|
|
+ var task = publisher.UploadDir(_packageHandler.DistFolder, _packageHandler.FullBuildName);
|
|
|
task.UploadingProgress += (s, e) =>
|
|
|
{
|
|
|
Dispatcher.Invoke(() =>
|
|
@@ -100,8 +120,10 @@ namespace fisp
|
|
|
{
|
|
|
Dispatcher.Invoke(() =>
|
|
|
{
|
|
|
+ PublishUrl.Text = $"https://app.fis.plus/{PackageName.Text}/index.html";
|
|
|
+ PublishUrl.Visibility = Visibility.Visible;
|
|
|
UnlockActions();
|
|
|
- MessageBox.Show("Publish successed!", "Publish result", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ MessageBox.Show(this,"Publish successed!", "Publish result", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
});
|
|
|
};
|
|
|
task.Failed += (s, m) =>
|
|
@@ -109,25 +131,36 @@ namespace fisp
|
|
|
Dispatcher.Invoke(() =>
|
|
|
{
|
|
|
UnlockActions();
|
|
|
- MessageBox.Show($"Publish failed:\n\n{m}", "Publish result", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
+ MessageBox.Show(this, $"Publish failed:\n\n{m}", "Publish result", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
});
|
|
|
};
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
UnlockActions();
|
|
|
- MessageBox.Show($"Publish failed:\n\n{ex}", "Publish result", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
+ MessageBox.Show(this, $"Publish failed:\n\n{ex}", "Publish result", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void OnChannelSelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
|
{
|
|
|
- HidePublishPanel();
|
|
|
- PackageConsole.Visibility = Visibility.Collapsed;
|
|
|
- if (packageHandler != null)
|
|
|
+ PackageFolder.Visibility = Visibility.Collapsed;
|
|
|
+ if (_packageHandler != null)
|
|
|
{
|
|
|
- packageHandler.IsEmbedded = IsEmbedded;
|
|
|
- }
|
|
|
+ _packageHandler.IsEmbedded = IsEmbedded;
|
|
|
+ }
|
|
|
+ ResetPublishStep();
|
|
|
+ PublishStep2.IsEnabled = !IsEmbedded;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void ResetPublishStep()
|
|
|
+ {
|
|
|
+ PublishButton.IsEnabled = false;
|
|
|
+ UploadingProgressText.Text = string.Empty;
|
|
|
+ TotalProgressText.Text = string.Empty;
|
|
|
+ UploadingProgress.Value = 0;
|
|
|
+ TotalProgress.Value = 0;
|
|
|
+ PublishUrl.Visibility = Visibility.Collapsed;
|
|
|
}
|
|
|
|
|
|
private void OnPackageNameChanged(object sender, TextChangedEventArgs e)
|
|
@@ -135,74 +168,115 @@ namespace fisp
|
|
|
if (PublishUrl != null)
|
|
|
{
|
|
|
PublishUrl.Text = $"https://app.fis.plus/{PackageName.Text}/index.html";
|
|
|
+ PublishStep2.IsEnabled = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void OnMaintenanceClick(object sender, EventArgs e)
|
|
|
- {
|
|
|
- new MaintenanceWindow().ShowDialog();
|
|
|
- }
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 显示推送面板
|
|
|
+ /// 锁住所用操作
|
|
|
/// </summary>
|
|
|
- private void ShowPublishPanel()
|
|
|
+ private void LockActions()
|
|
|
{
|
|
|
- if (GridPublish.Visibility != Visibility.Visible)
|
|
|
- {
|
|
|
- GridPublish.Visibility = Visibility.Visible;
|
|
|
- Height = 480;
|
|
|
- }
|
|
|
-
|
|
|
- PublishUrl.Text = $"https://app.fis.plus/{PackageName.Text}/index.html";
|
|
|
+ TopPanel.IsEnabled = false;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 隐藏推送面板
|
|
|
+ /// 解锁所有操作
|
|
|
/// </summary>
|
|
|
- private void HidePublishPanel()
|
|
|
- {
|
|
|
- if (GridPublish.Visibility == Visibility.Visible)
|
|
|
- {
|
|
|
- GridPublish.Visibility = Visibility.Collapsed;
|
|
|
- Height = 200;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void ShowBusy()
|
|
|
+ private void UnlockActions()
|
|
|
{
|
|
|
- BusyIndicator.IsBusy = true;
|
|
|
+ TopPanel.IsEnabled = true;
|
|
|
}
|
|
|
|
|
|
- private void HideBusy()
|
|
|
+ private void OnTabControlSelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
|
{
|
|
|
- BusyIndicator.IsBusy = false;
|
|
|
+ var tabControl = (TabControl)sender;
|
|
|
+ if (tabControl.SelectedIndex == 1)
|
|
|
+ {
|
|
|
+ BusyIndicator.IsBusy = true;
|
|
|
+ OnlineFolderList.Items.Clear();
|
|
|
+ Task.Run(() =>
|
|
|
+ {
|
|
|
+ libfisp.fisp publisher = new libfisp.fisp();
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var folders = publisher.ListFolders(string.Empty);
|
|
|
+ Dispatcher.Invoke(() =>
|
|
|
+ {
|
|
|
+ foreach (var folder in folders)
|
|
|
+ {
|
|
|
+ OnlineFolderList.Items.Add(folder.Replace("/", ""));
|
|
|
+ }
|
|
|
+ BusyIndicator.IsBusy = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Dispatcher.Invoke(() =>
|
|
|
+ {
|
|
|
+ BusyIndicator.IsBusy = false;
|
|
|
+ MessageBox.Show(this, $"Load online folders failed:\n\n{ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ OnlineFolderList.Items.Clear();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 锁住所用操作
|
|
|
- /// </summary>
|
|
|
- private void LockActions()
|
|
|
+ private void OnDeleteFolderClick(object sender, MouseButtonEventArgs e)
|
|
|
{
|
|
|
- SourceFolder.IsEnabled = false;
|
|
|
- ComboBoxChannel.IsEnabled = false;
|
|
|
- ButtonPackage.IsEnabled = false;
|
|
|
- ButtonMaintenance.IsEnabled = false;
|
|
|
- ButtonPublish.IsEnabled = false;
|
|
|
- ButtonChooseSourceFolder.IsEnabled = false;
|
|
|
+ var obj = (TextBlock)sender;
|
|
|
+ var folder = (string)obj.DataContext;
|
|
|
+ if (MessageBox.Show(this, "Are you sure you want to delete this folder?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
|
|
|
+ {
|
|
|
+ LockActions();
|
|
|
+ BusyIndicator.IsBusy = true;
|
|
|
+ libfisp.fisp publisher = new libfisp.fisp();
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var task = publisher.DeleteFolder(folder + "/");
|
|
|
+ task.Progress += (s, e) =>
|
|
|
+ {
|
|
|
+ Dispatcher.Invoke(() =>
|
|
|
+ {
|
|
|
+ BusyIndicator.BusyContent = $"Deleting folder {folder} ... {(int)e}%";
|
|
|
+ });
|
|
|
+ };
|
|
|
+ task.Successed += (s, e) =>
|
|
|
+ {
|
|
|
+ Dispatcher.Invoke(() =>
|
|
|
+ {
|
|
|
+ OnlineFolderList.Items.Remove(folder);
|
|
|
+ BusyIndicator.IsBusy = false;
|
|
|
+ UnlockActions();
|
|
|
+ });
|
|
|
+ };
|
|
|
+ task.Failed += (s, m) =>
|
|
|
+ {
|
|
|
+ Dispatcher.Invoke(() =>
|
|
|
+ {
|
|
|
+ BusyIndicator.IsBusy = false;
|
|
|
+ UnlockActions();
|
|
|
+ MessageBox.Show(this, $"Delete folder {folder} failed:\n\n{m}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
+ });
|
|
|
+ };
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ BusyIndicator.IsBusy = false;
|
|
|
+ UnlockActions();
|
|
|
+ MessageBox.Show(this, $"Delete folder {folder} failed:\n\n{ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 解锁所有操作
|
|
|
- /// </summary>
|
|
|
- private void UnlockActions()
|
|
|
+ private void OnPackageConsoleMouseDown(object sender, MouseButtonEventArgs e)
|
|
|
{
|
|
|
- SourceFolder.IsEnabled = true;
|
|
|
- ComboBoxChannel.IsEnabled = true;
|
|
|
- ButtonPackage.IsEnabled = true;
|
|
|
- ButtonMaintenance.IsEnabled = true;
|
|
|
- ButtonPublish.IsEnabled = true;
|
|
|
- ButtonChooseSourceFolder.IsEnabled = true;
|
|
|
+ Process.Start("explorer.exe", PackageFolder.Text);
|
|
|
}
|
|
|
}
|
|
|
}
|