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

97 lines
2.2 KiB
C#
Raw Normal View History

namespace LanMountainDesktop.Shared.Contracts.Update;
public enum UpdatePhase
{
Idle,
Checking,
Checked,
Downloading,
PausedDownloading,
Downloaded,
Installing,
PausedInstalling,
Installed,
Verifying,
Completed,
Failed,
Recovering,
RollingBack,
RolledBack
}
public enum UpdatePayloadKind
{
DeltaPlonds,
DeltaLegacy,
FullInstaller
}
public enum InstallStage
{
None,
VerifySignature,
CreateTarget,
ApplyFiles,
VerifyHashes,
ActivateDeployment,
Cleanup,
Completed,
Failed,
RollingBack
}
public enum UpdateChannel
{
Stable,
Preview
}
public enum UpdateMode
{
Manual,
DownloadThenConfirm,
SilentOnExit
}
public enum UpdateDownloadSource
{
PlondsApi,
GitHub,
GhProxy
}
public static class UpdatePhaseExtensions
{
public static bool IsTerminal(this UpdatePhase phase) =>
phase is UpdatePhase.Completed or UpdatePhase.Failed or UpdatePhase.RolledBack;
public static bool IsBusy(this UpdatePhase phase) =>
phase is UpdatePhase.Checking or UpdatePhase.Downloading or UpdatePhase.Installing
or UpdatePhase.Verifying or UpdatePhase.Recovering or UpdatePhase.RollingBack;
public static bool CanCheck(this UpdatePhase phase) =>
phase is UpdatePhase.Idle or UpdatePhase.Checked or UpdatePhase.Downloaded
or UpdatePhase.Completed or UpdatePhase.Failed or UpdatePhase.RolledBack;
public static bool CanDownload(this UpdatePhase phase) =>
phase is UpdatePhase.Checked;
public static bool CanInstall(this UpdatePhase phase) =>
phase is UpdatePhase.Downloaded;
public static bool CanRollback(this UpdatePhase phase) =>
phase is UpdatePhase.Failed;
public static bool CanPause(this UpdatePhase phase) =>
phase is UpdatePhase.Downloading;
public static bool CanResume(this UpdatePhase phase) =>
phase is UpdatePhase.PausedDownloading or UpdatePhase.PausedInstalling;
public static bool CanCancel(this UpdatePhase phase) =>
phase.IsBusy() || phase.CanResume();
public static bool IsPaused(this UpdatePhase phase) =>
phase is UpdatePhase.PausedDownloading or UpdatePhase.PausedInstalling;
}