Files
LanMountainDesktop/LanMountainDesktop.Shared.Contracts/Update/UpdateMessages.cs

67 lines
1.7 KiB
C#
Raw Normal View History

namespace LanMountainDesktop.Shared.Contracts.Update;
public sealed record InstallProgressReport(
InstallStage Stage,
string Message,
int ProgressPercent,
string? CurrentFile,
int FilesCompleted,
int FilesTotal)
{
public DateTimeOffset Timestamp { get; init; } = DateTimeOffset.UtcNow;
}
public sealed record InstallCompleteReport(
bool Success,
string? FromVersion,
string? ToVersion,
string? ErrorMessage,
bool WasRolledBack)
{
public DateTimeOffset Timestamp { get; init; } = DateTimeOffset.UtcNow;
}
public sealed record DownloadProgressReport(
string CurrentFile,
long BytesDownloaded,
long BytesTotal,
double BytesPerSecond,
int FilesCompleted,
int FilesTotal,
double OverallFraction)
{
public int OverallPercent => (int)Math.Clamp(OverallFraction * 100, 0, 100);
}
public sealed record UpdateProgressReport(
UpdatePhase Phase,
string Message,
double ProgressFraction,
DownloadProgressReport? DownloadDetail,
InstallProgressReport? InstallDetail)
{
public int ProgressPercent => (int)Math.Clamp(ProgressFraction * 100, 0, 100);
}
public sealed record UpdateCheckReport(
bool IsUpdateAvailable,
string? LatestVersion,
string? CurrentVersion,
UpdatePayloadKind? PayloadKind,
string? DistributionId,
string? Channel,
DateTimeOffset? PublishedAt,
long? TotalDownloadBytes,
long? FullInstallerBytes,
string? ErrorMessage);
public sealed record InstallRequest(
UpdatePayloadKind PayloadKind,
string LauncherRoot,
string? LaunchSource = null);
public sealed record LaunchResult(
bool Success,
string? ErrorMessage,
int? ProcessId);