2026-07-13 11:35:24 +00:00
|
|
|
using AIStudio.Settings;
|
|
|
|
|
using AIStudio.Settings.DataModel;
|
|
|
|
|
using AIStudio.Tools.Rust;
|
|
|
|
|
|
|
|
|
|
namespace AIStudio.Tools.Services;
|
|
|
|
|
|
|
|
|
|
public sealed class UpdatePolicy(SettingsManager settingsManager, RuntimeInfoResponse runtimeInfo)
|
|
|
|
|
{
|
|
|
|
|
public UpdatePolicyMode CurrentMode => settingsManager.ConfigurationData.App.UpdateInterval is UpdateInterval.DISABLE_UPDATES
|
|
|
|
|
? UpdatePolicyMode.ENTERPRISE_DISABLED
|
|
|
|
|
: runtimeInfo.LinuxPackageType switch
|
|
|
|
|
{
|
2026-08-16 10:18:53 +00:00
|
|
|
LinuxPackageType.FLATPAK => UpdatePolicyMode.FLATPAK,
|
2026-08-15 12:04:45 +00:00
|
|
|
_ => runtimeInfo.InstallationKind switch
|
|
|
|
|
{
|
|
|
|
|
//
|
|
|
|
|
// The runtime already refuses to update these installations. We mirror its decision
|
|
|
|
|
// here so that the UI explains the situation instead of offering update actions that
|
|
|
|
|
// would silently do nothing:
|
|
|
|
|
//
|
|
|
|
|
InstallationKind.MANAGED => UpdatePolicyMode.MANAGED_INSTALLATION,
|
|
|
|
|
InstallationKind.UNSUPPORTED_LOCATION => UpdatePolicyMode.UNSUPPORTED_INSTALLATION_LOCATION,
|
|
|
|
|
InstallationKind.DEVELOPMENT => UpdatePolicyMode.DEVELOPMENT,
|
|
|
|
|
_ => UpdatePolicyMode.SELF_UPDATE
|
|
|
|
|
}
|
2026-07-13 11:35:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
public bool AllowsManualChecks => this.CurrentMode is UpdatePolicyMode.SELF_UPDATE;
|
|
|
|
|
|
|
|
|
|
public bool AllowsAutomaticChecks => this.CurrentMode is UpdatePolicyMode.SELF_UPDATE &&
|
|
|
|
|
settingsManager.ConfigurationData.App.UpdateInterval is not UpdateInterval.NO_CHECK;
|
|
|
|
|
|
|
|
|
|
public bool AllowsInstallations => this.CurrentMode is UpdatePolicyMode.SELF_UPDATE;
|
|
|
|
|
}
|