mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2026-04-04 03:23:05 -06:00
Some checks are pending
docker / pack (push) Waiting to run
docker / deploy (push) Waiting to run
main / format (push) Waiting to run
main / test (push) Waiting to run
main / pack (DiscordChatExporter.Cli, DiscordChatExporter.Cli, linux-arm) (push) Waiting to run
main / pack (DiscordChatExporter.Cli, DiscordChatExporter.Cli, linux-arm64) (push) Waiting to run
main / pack (DiscordChatExporter.Cli, DiscordChatExporter.Cli, linux-musl-x64) (push) Waiting to run
main / pack (DiscordChatExporter.Cli, DiscordChatExporter.Cli, linux-x64) (push) Waiting to run
main / pack (DiscordChatExporter.Cli, DiscordChatExporter.Cli, osx-arm64) (push) Waiting to run
main / pack (DiscordChatExporter.Cli, DiscordChatExporter.Cli, osx-x64) (push) Waiting to run
main / pack (DiscordChatExporter.Cli, DiscordChatExporter.Cli, win-arm64) (push) Waiting to run
main / pack (DiscordChatExporter.Cli, DiscordChatExporter.Cli, win-x64) (push) Waiting to run
main / pack (DiscordChatExporter.Cli, DiscordChatExporter.Cli, win-x86) (push) Waiting to run
main / pack (DiscordChatExporter.Gui, DiscordChatExporter, linux-arm) (push) Waiting to run
main / pack (DiscordChatExporter.Gui, DiscordChatExporter, linux-arm64) (push) Waiting to run
main / pack (DiscordChatExporter.Gui, DiscordChatExporter, linux-musl-x64) (push) Waiting to run
main / pack (DiscordChatExporter.Gui, DiscordChatExporter, linux-x64) (push) Waiting to run
main / pack (DiscordChatExporter.Gui, DiscordChatExporter, osx-arm64) (push) Waiting to run
main / pack (DiscordChatExporter.Gui, DiscordChatExporter, osx-x64) (push) Waiting to run
main / pack (DiscordChatExporter.Gui, DiscordChatExporter, win-arm64) (push) Waiting to run
main / pack (DiscordChatExporter.Gui, DiscordChatExporter, win-x64) (push) Waiting to run
main / pack (DiscordChatExporter.Gui, DiscordChatExporter, win-x86) (push) Waiting to run
main / release (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Cli, DiscordChatExporter.Cli, linux-arm) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Cli, DiscordChatExporter.Cli, linux-arm64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Cli, DiscordChatExporter.Cli, linux-musl-x64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Cli, DiscordChatExporter.Cli, linux-x64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Cli, DiscordChatExporter.Cli, osx-arm64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Cli, DiscordChatExporter.Cli, osx-x64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Cli, DiscordChatExporter.Cli, win-arm64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Cli, DiscordChatExporter.Cli, win-x64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Cli, DiscordChatExporter.Cli, win-x86) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Gui, DiscordChatExporter, linux-arm) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Gui, DiscordChatExporter, linux-arm64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Gui, DiscordChatExporter, linux-musl-x64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Gui, DiscordChatExporter, linux-x64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Gui, DiscordChatExporter, osx-arm64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Gui, DiscordChatExporter, osx-x64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Gui, DiscordChatExporter, win-arm64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Gui, DiscordChatExporter, win-x64) (push) Blocked by required conditions
main / deploy (DiscordChatExporter.Gui, DiscordChatExporter, win-x86) (push) Blocked by required conditions
main / notify (push) Blocked by required conditions
123 lines
3.8 KiB
C#
123 lines
3.8 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.Threading.Tasks;
|
|
using Avalonia;
|
|
using DiscordChatExporter.Gui.Framework;
|
|
using DiscordChatExporter.Gui.Localization;
|
|
using DiscordChatExporter.Gui.Services;
|
|
using DiscordChatExporter.Gui.Utils.Extensions;
|
|
using DiscordChatExporter.Gui.ViewModels.Components;
|
|
|
|
namespace DiscordChatExporter.Gui.ViewModels;
|
|
|
|
public partial class MainViewModel(
|
|
ViewModelManager viewModelManager,
|
|
DialogManager dialogManager,
|
|
SnackbarManager snackbarManager,
|
|
SettingsService settingsService,
|
|
UpdateService updateService,
|
|
LocalizationManager localizationManager
|
|
) : ViewModelBase
|
|
{
|
|
public string Title { get; } = $"{Program.Name} v{Program.VersionString}";
|
|
|
|
public DashboardViewModel Dashboard { get; } = viewModelManager.GetDashboardViewModel();
|
|
|
|
private async Task ShowUkraineSupportMessageAsync()
|
|
{
|
|
if (!settingsService.IsUkraineSupportMessageEnabled)
|
|
return;
|
|
|
|
var dialog = viewModelManager.GetMessageBoxViewModel(
|
|
localizationManager.UkraineSupportTitle,
|
|
localizationManager.UkraineSupportMessage,
|
|
localizationManager.LearnMoreButton,
|
|
localizationManager.CloseButton
|
|
);
|
|
|
|
// Disable this message in the future
|
|
settingsService.IsUkraineSupportMessageEnabled = false;
|
|
settingsService.Save();
|
|
|
|
if (await dialogManager.ShowDialogAsync(dialog) == true)
|
|
Process.StartShellExecute("https://tyrrrz.me/ukraine?source=discordchatexporter");
|
|
}
|
|
|
|
private async Task ShowDevelopmentBuildMessageAsync()
|
|
{
|
|
if (!Program.IsDevelopmentBuild)
|
|
return;
|
|
|
|
// If debugging, the user is likely a developer
|
|
if (Debugger.IsAttached)
|
|
return;
|
|
|
|
var dialog = viewModelManager.GetMessageBoxViewModel(
|
|
localizationManager.UnstableBuildTitle,
|
|
string.Format(localizationManager.UnstableBuildMessage, Program.Name),
|
|
localizationManager.SeeReleasesButton,
|
|
localizationManager.CloseButton
|
|
);
|
|
|
|
if (await dialogManager.ShowDialogAsync(dialog) == true)
|
|
Process.StartShellExecute(Program.ProjectReleasesUrl);
|
|
}
|
|
|
|
private async Task CheckForUpdatesAsync()
|
|
{
|
|
try
|
|
{
|
|
var updateVersion = await updateService.CheckForUpdatesAsync();
|
|
if (updateVersion is null)
|
|
return;
|
|
|
|
snackbarManager.Notify(
|
|
string.Format(
|
|
localizationManager.UpdateDownloadingMessage,
|
|
Program.Name,
|
|
updateVersion
|
|
)
|
|
);
|
|
await updateService.PrepareUpdateAsync(updateVersion);
|
|
|
|
snackbarManager.Notify(
|
|
localizationManager.UpdateReadyMessage,
|
|
localizationManager.UpdateInstallNowButton,
|
|
() =>
|
|
{
|
|
updateService.FinalizeUpdate(true);
|
|
|
|
if (Application.Current?.ApplicationLifetime?.TryShutdown(2) != true)
|
|
Environment.Exit(2);
|
|
}
|
|
);
|
|
}
|
|
catch
|
|
{
|
|
// Failure to update shouldn't crash the application
|
|
snackbarManager.Notify(localizationManager.UpdateFailedMessage);
|
|
}
|
|
}
|
|
|
|
public override async Task InitializeAsync()
|
|
{
|
|
await ShowUkraineSupportMessageAsync();
|
|
await ShowDevelopmentBuildMessageAsync();
|
|
await CheckForUpdatesAsync();
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
if (disposing)
|
|
{
|
|
// Save settings
|
|
settingsService.Save();
|
|
|
|
// Finalize pending updates
|
|
updateService.FinalizeUpdate(false);
|
|
}
|
|
|
|
base.Dispose(disposing);
|
|
}
|
|
}
|