|
@@ -19,8 +19,6 @@ using Avalonia.Controls;
|
|
|
using Avalonia.Threading;
|
|
|
using System.IO.Compression;
|
|
|
using ReactiveUI.Validation.Extensions;
|
|
|
-using Avalonia.Media;
|
|
|
-using Avalonia.Data;
|
|
|
using System.Collections.Generic;
|
|
|
using VeloeMinecraftLauncher.Models.Entity;
|
|
|
using VeloeMinecraftLauncher.Models;
|
|
@@ -34,46 +32,49 @@ public class MainWindowViewModel : ViewModelBase
|
|
|
{
|
|
|
public MainWindowViewModel()
|
|
|
{
|
|
|
+ _downloadedVersions = new();
|
|
|
_serverPanels = new();
|
|
|
|
|
|
- Task.Run(async () =>
|
|
|
+ try
|
|
|
{
|
|
|
- try
|
|
|
- {
|
|
|
- //creating logger
|
|
|
- EventSink eventSink = new(null);
|
|
|
- eventSink.DataReceived += LogHandler;
|
|
|
- var hook = new CaptureFilePathHook();
|
|
|
- _logger = new LoggerConfiguration()
|
|
|
- .MinimumLevel.Debug()
|
|
|
- .WriteTo.Sink(eventSink, Settings.consoleLogEventLevel)
|
|
|
- .WriteTo.File("launcher.log", Settings.fileLogEventLevel, fileSizeLimitBytes: Settings.maxLog * 1024, rollOnFileSizeLimit: true, hooks: hook)// restricted... is Optional
|
|
|
- .CreateLogger();
|
|
|
- Settings.logger = _logger;
|
|
|
- Settings.logFilePath = hook;
|
|
|
- //loading settings
|
|
|
- _logger.Debug("Loading settings.");
|
|
|
- Settings.LoadSettings();
|
|
|
- _username = Settings.username;
|
|
|
-
|
|
|
- //loading local verions
|
|
|
- _logger.Debug("Loading local versions.");
|
|
|
- updateAvailable();
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
+ //creating logger
|
|
|
+ EventSink eventSink = new(null);
|
|
|
+ eventSink.DataReceived += LogHandler;
|
|
|
+ var hook = new CaptureFilePathHook();
|
|
|
+ _logger = new LoggerConfiguration()
|
|
|
+ .MinimumLevel.Debug()
|
|
|
+ .WriteTo.Sink(eventSink, Settings.consoleLogEventLevel)
|
|
|
+ .WriteTo.File("launcher.log", Settings.fileLogEventLevel, fileSizeLimitBytes: Settings.maxLog * 1024, rollOnFileSizeLimit: true, hooks: hook)// restricted... is Optional
|
|
|
+ .CreateLogger();
|
|
|
+ Settings.logger = _logger;
|
|
|
+ Settings.logFilePath = hook;
|
|
|
+ //loading settings
|
|
|
+ _logger.Debug("Loading settings.");
|
|
|
+ Settings.LoadSettings();
|
|
|
+ _username = Settings.username;
|
|
|
+
|
|
|
+ //loading local verions
|
|
|
+ _logger.Debug("Loading local versions.");
|
|
|
+ updateAvailable();
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ OpenErrorWindow(ex);
|
|
|
+ if (_logger is null)
|
|
|
{
|
|
|
- OpenErrorWindow(ex);
|
|
|
- if (_logger is null)
|
|
|
- {
|
|
|
- _logger = new LoggerConfiguration().MinimumLevel.Debug().CreateLogger();
|
|
|
- }
|
|
|
+ _logger = new LoggerConfiguration().MinimumLevel.Debug().CreateLogger();
|
|
|
}
|
|
|
-
|
|
|
+ }
|
|
|
+ finally
|
|
|
+ {
|
|
|
this.ValidationRule(
|
|
|
viewModel => viewModel.Username,
|
|
|
value => { return !string.IsNullOrEmpty(value); },
|
|
|
"Empty username.");
|
|
|
+ }
|
|
|
|
|
|
+ Task.Run(async () =>
|
|
|
+ {
|
|
|
UpdateUpdater();
|
|
|
|
|
|
try
|
|
@@ -234,8 +235,8 @@ public class MainWindowViewModel : ViewModelBase
|
|
|
ILogger _logger;
|
|
|
|
|
|
LatestLauncherVersion? _latestLauncherInfo;
|
|
|
- DownloadedVersion _downloadedVersion;
|
|
|
- DownloadedVersion _startedVersion;
|
|
|
+ DownloadedVersion? _downloadedVersion;
|
|
|
+ DownloadedVersion? _startedVersion;
|
|
|
|
|
|
ObservableCollection<DownloadedVersion> _downloadedVersions;
|
|
|
ObservableCollection<ServerPanelModel> _serverPanels;
|
|
@@ -254,7 +255,7 @@ public class MainWindowViewModel : ViewModelBase
|
|
|
|
|
|
public ObservableCollection<Changelog>? Changelogs { get; private set; }
|
|
|
|
|
|
- public DownloadedVersion DownloadedVersion
|
|
|
+ public DownloadedVersion? DownloadedVersion
|
|
|
{
|
|
|
get => _downloadedVersion;
|
|
|
set => this.RaiseAndSetIfChanged(ref _downloadedVersion, value);
|
|
@@ -355,7 +356,7 @@ public class MainWindowViewModel : ViewModelBase
|
|
|
set => this.RaisePropertyChanged(nameof(ConsoleTextCaretIndex));
|
|
|
}
|
|
|
|
|
|
- public void OnClickCommand()
|
|
|
+ public async void OnClickCommand()
|
|
|
{
|
|
|
using var versionsDownloaderViewModel = new VersionsDownloaderViewModel();
|
|
|
var versionsDownloader = new VersionsDownloader
|
|
@@ -365,8 +366,16 @@ public class MainWindowViewModel : ViewModelBase
|
|
|
|
|
|
if (Avalonia.Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop && desktop.MainWindow is not null)
|
|
|
{
|
|
|
- versionsDownloader.Closed += updateAvailable;
|
|
|
- versionsDownloader.ShowDialog(desktop.MainWindow);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ versionsDownloader.Closed += updateAvailable;
|
|
|
+ await versionsDownloader.ShowDialog(desktop.MainWindow);
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ //sometimes throws collection modified exception in manager tab
|
|
|
+ OpenErrorWindow(ex);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|