mirror of
https://github.com/frosch95/K8sFileBrowser.git
synced 2026-04-11 21:08:22 +02:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b33552531a | |||
| 7f7471d47b |
@@ -9,7 +9,7 @@
|
||||
<Configurations>Debug;Release</Configurations>
|
||||
<Platforms>AnyCPU</Platforms>
|
||||
<ApplicationIcon>Assets/app.ico</ApplicationIcon>
|
||||
<Version>0.0.9</Version>
|
||||
<Version>0.1.2</Version>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
|
||||
@@ -17,12 +17,12 @@ namespace K8sFileBrowser.ViewModels;
|
||||
|
||||
public class MainWindowViewModel : ViewModelBase
|
||||
{
|
||||
|
||||
|
||||
#region Properties
|
||||
|
||||
|
||||
[Reactive]
|
||||
public string? Version { get; set; } = null!;
|
||||
|
||||
public string? Version { get; set; }
|
||||
|
||||
[Reactive]
|
||||
public IEnumerable<ClusterContext> ClusterContexts { get; set; } = null!;
|
||||
|
||||
@@ -59,10 +59,12 @@ public class MainWindowViewModel : ViewModelBase
|
||||
[Reactive]
|
||||
public Message Message { get; set; } = null!;
|
||||
|
||||
private string _lastDirectory = ".";
|
||||
|
||||
#endregion Properties
|
||||
|
||||
#region Commands
|
||||
|
||||
|
||||
public ReactiveCommand<Unit, Unit> DownloadCommand { get; private set; } = null!;
|
||||
public ReactiveCommand<Unit, Unit> DownloadLogCommand { get; private set; } = null!;
|
||||
public ReactiveCommand<Unit, Unit> ParentCommand { get; private set; } = null!;
|
||||
@@ -96,7 +98,7 @@ public class MainWindowViewModel : ViewModelBase
|
||||
}
|
||||
|
||||
#region Property Subscriptions
|
||||
|
||||
|
||||
private void InitiallyLoadContexts(IKubernetesService kubernetesService)
|
||||
{
|
||||
// load the cluster contexts when the view model is created
|
||||
@@ -115,7 +117,7 @@ public class MainWindowViewModel : ViewModelBase
|
||||
.FirstOrDefault(c => c.Name == kubernetesService.GetCurrentContext());
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void RegisterReadNamespaces(IKubernetesService kubernetesService)
|
||||
{
|
||||
// read the cluster contexts
|
||||
@@ -130,7 +132,7 @@ public class MainWindowViewModel : ViewModelBase
|
||||
Namespaces = ns;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void RegisterReadPods()
|
||||
{
|
||||
// read the pods when the namespace changes
|
||||
@@ -146,7 +148,7 @@ public class MainWindowViewModel : ViewModelBase
|
||||
Pods = x;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void RegisterReadContainers()
|
||||
{
|
||||
// read the file information when the path changes
|
||||
@@ -232,9 +234,10 @@ public class MainWindowViewModel : ViewModelBase
|
||||
await Observable.StartAsync(async () =>
|
||||
{
|
||||
var fileName = SelectedPod?.Name + ".log";
|
||||
var saveFileName = await ApplicationHelper.SaveFile(".", fileName);
|
||||
var saveFileName = await ApplicationHelper.SaveFile(_lastDirectory, fileName);
|
||||
if (saveFileName != null)
|
||||
{
|
||||
SetLastDirectory(saveFileName);
|
||||
ShowWorkingMessage("Downloading Log...");
|
||||
await kubernetesService.DownloadLog(SelectedNamespace, SelectedPod, SelectedContainer, saveFileName);
|
||||
HideWorkingMessage();
|
||||
@@ -258,9 +261,10 @@ public class MainWindowViewModel : ViewModelBase
|
||||
{
|
||||
var fileName = SelectedFile!.Name.Substring(SelectedFile!.Name.LastIndexOf('/') + 1,
|
||||
SelectedFile!.Name.Length - SelectedFile!.Name.LastIndexOf('/') - 1);
|
||||
var saveFileName = await ApplicationHelper.SaveFile(".", fileName);
|
||||
var saveFileName = await ApplicationHelper.SaveFile(_lastDirectory, fileName);
|
||||
if (saveFileName != null)
|
||||
{
|
||||
SetLastDirectory(saveFileName);
|
||||
ShowWorkingMessage("Downloading File...");
|
||||
await kubernetesService.DownloadFile(SelectedNamespace, SelectedPod, SelectedContainer, SelectedFile, saveFileName);
|
||||
HideWorkingMessage();
|
||||
@@ -272,6 +276,11 @@ public class MainWindowViewModel : ViewModelBase
|
||||
.Subscribe(ShowErrorMessage);
|
||||
}
|
||||
|
||||
private void SetLastDirectory(string saveFileName)
|
||||
{
|
||||
_lastDirectory = saveFileName.Substring(0, saveFileName.LastIndexOf('\\'));
|
||||
}
|
||||
|
||||
private void ConfigureOpenDirectoryCommand()
|
||||
{
|
||||
var isDirectory = this
|
||||
@@ -290,11 +299,11 @@ public class MainWindowViewModel : ViewModelBase
|
||||
OpenCommand.ThrownExceptions.ObserveOn(RxApp.MainThreadScheduler)
|
||||
.Subscribe(ShowErrorMessage);
|
||||
}
|
||||
|
||||
|
||||
#endregion Configure Commands
|
||||
|
||||
#region Get Data
|
||||
|
||||
|
||||
private static async Task<IEnumerable<Pod>> PodsAsync(Namespace? ns, IKubernetesService kubernetesService)
|
||||
{
|
||||
if (ns == null)
|
||||
@@ -346,67 +355,74 @@ public class MainWindowViewModel : ViewModelBase
|
||||
Parent = parent
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
|
||||
#endregion Get Data
|
||||
|
||||
|
||||
#region Reset Data
|
||||
|
||||
|
||||
private void ResetPath()
|
||||
{
|
||||
FileInformation = new List<FileInformation>();
|
||||
SelectedPath = null;
|
||||
SelectedContainer = null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void ResetContainers()
|
||||
{
|
||||
ResetPath();
|
||||
Containers = new List<Container>();
|
||||
SelectedPod = null;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void ResetPods()
|
||||
{
|
||||
ResetContainers();
|
||||
SelectedNamespace = null;
|
||||
Pods = new List<Pod>();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void ResetNamespaces()
|
||||
{
|
||||
ResetPods();
|
||||
Namespaces = new List<Namespace>();
|
||||
SelectedClusterContext = null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion Reset Data
|
||||
|
||||
|
||||
#region show messages
|
||||
|
||||
|
||||
private void ShowWorkingMessage(string message)
|
||||
{
|
||||
Message = new Message
|
||||
RxApp.MainThreadScheduler.Schedule(Action);
|
||||
return;
|
||||
|
||||
void Action()
|
||||
{
|
||||
IsVisible = true,
|
||||
Text = message,
|
||||
IsError = false
|
||||
};
|
||||
Message = new Message
|
||||
{
|
||||
IsVisible = true,
|
||||
Text = message,
|
||||
IsError = false
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
private void ShowErrorMessage(string message)
|
||||
{
|
||||
RxApp.MainThreadScheduler.Schedule(Action);
|
||||
return;
|
||||
|
||||
async void Action()
|
||||
{
|
||||
Message = new Message { IsVisible = true, Text = message, IsError = true };
|
||||
await Task.Delay(7000);
|
||||
HideWorkingMessage();
|
||||
}
|
||||
|
||||
RxApp.MainThreadScheduler.Schedule(Action);
|
||||
}
|
||||
|
||||
|
||||
private void ShowErrorMessage(Exception exception)
|
||||
{
|
||||
// ReSharper disable once TemplateIsNotCompileTimeConstantProblem
|
||||
@@ -423,6 +439,6 @@ public class MainWindowViewModel : ViewModelBase
|
||||
IsError = false
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
#endregion show messages
|
||||
}
|
||||
Reference in New Issue
Block a user