|
|
|
@ -9,18 +9,20 @@ namespace DiscordChatExporter.Gui.Services;
|
|
|
|
|
|
|
|
|
|
public class UpdateService(SettingsService settingsService) : IDisposable
|
|
|
|
|
{
|
|
|
|
|
private readonly IUpdateManager _updateManager = new UpdateManager(
|
|
|
|
|
new GithubPackageResolver(
|
|
|
|
|
"Tyrrrz",
|
|
|
|
|
"DiscordChatExporter",
|
|
|
|
|
// Examples:
|
|
|
|
|
// DiscordChatExporter.win-arm64.zip
|
|
|
|
|
// DiscordChatExporter.win-x64.zip
|
|
|
|
|
// DiscordChatExporter.linux-x64.zip
|
|
|
|
|
$"DiscordChatExporter.{RuntimeInformation.RuntimeIdentifier}.zip"
|
|
|
|
|
),
|
|
|
|
|
new ZipPackageExtractor()
|
|
|
|
|
);
|
|
|
|
|
private readonly IUpdateManager? _updateManager = OperatingSystem.IsWindows()
|
|
|
|
|
? new UpdateManager(
|
|
|
|
|
new GithubPackageResolver(
|
|
|
|
|
"Tyrrrz",
|
|
|
|
|
"DiscordChatExporter",
|
|
|
|
|
// Examples:
|
|
|
|
|
// DiscordChatExporter.win-arm64.zip
|
|
|
|
|
// DiscordChatExporter.win-x64.zip
|
|
|
|
|
// DiscordChatExporter.linux-x64.zip
|
|
|
|
|
$"DiscordChatExporter.{RuntimeInformation.RuntimeIdentifier}.zip"
|
|
|
|
|
),
|
|
|
|
|
new ZipPackageExtractor()
|
|
|
|
|
)
|
|
|
|
|
: null;
|
|
|
|
|
|
|
|
|
|
private Version? _updateVersion;
|
|
|
|
|
private bool _updatePrepared;
|
|
|
|
@ -28,6 +30,9 @@ public class UpdateService(SettingsService settingsService) : IDisposable
|
|
|
|
|
|
|
|
|
|
public async ValueTask<Version?> CheckForUpdatesAsync()
|
|
|
|
|
{
|
|
|
|
|
if (_updateManager is null)
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
if (!settingsService.IsAutoUpdateEnabled)
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
@ -37,6 +42,9 @@ public class UpdateService(SettingsService settingsService) : IDisposable
|
|
|
|
|
|
|
|
|
|
public async ValueTask PrepareUpdateAsync(Version version)
|
|
|
|
|
{
|
|
|
|
|
if (_updateManager is null)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (!settingsService.IsAutoUpdateEnabled)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
@ -57,11 +65,10 @@ public class UpdateService(SettingsService settingsService) : IDisposable
|
|
|
|
|
|
|
|
|
|
public void FinalizeUpdate(bool needRestart)
|
|
|
|
|
{
|
|
|
|
|
if (!settingsService.IsAutoUpdateEnabled)
|
|
|
|
|
if (_updateManager is null)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
// Onova only works on Windows currently
|
|
|
|
|
if (!OperatingSystem.IsWindows())
|
|
|
|
|
if (!settingsService.IsAutoUpdateEnabled)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (_updateVersion is null || !_updatePrepared || _updaterLaunched)
|
|
|
|
@ -82,5 +89,5 @@ public class UpdateService(SettingsService settingsService) : IDisposable
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Dispose() => _updateManager.Dispose();
|
|
|
|
|
public void Dispose() => _updateManager?.Dispose();
|
|
|
|
|
}
|
|
|
|
|