mirror of https://github.com/jetkvm/kvm.git
refactor: remove downgrade attributes from ota state and jsonrpc
This commit is contained in:
parent
8bd3d4cfcf
commit
9832be29ef
|
|
@ -152,12 +152,12 @@ func (s *State) doUpdate(ctx context.Context, params UpdateParams) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
if shouldUpdateApp && (appUpdate.available || appUpdate.downgradeAvailable) {
|
||||
if shouldUpdateApp && appUpdate.available {
|
||||
appUpdate.pending = true
|
||||
s.triggerComponentUpdateState("app", appUpdate)
|
||||
}
|
||||
|
||||
if shouldUpdateSystem && (systemUpdate.available || systemUpdate.downgradeAvailable) {
|
||||
if shouldUpdateSystem && systemUpdate.available {
|
||||
systemUpdate.pending = true
|
||||
s.triggerComponentUpdateState("system", systemUpdate)
|
||||
}
|
||||
|
|
@ -292,7 +292,6 @@ func (s *State) checkUpdateStatus(
|
|||
return err
|
||||
}
|
||||
systemUpdateStatus.available = systemVersionRemote.GreaterThan(systemVersionLocal)
|
||||
systemUpdateStatus.downgradeAvailable = systemVersionRemote.LessThan(systemVersionLocal)
|
||||
|
||||
appVersionRemote, err := semver.NewVersion(remoteMetadata.AppVersion)
|
||||
if err != nil {
|
||||
|
|
@ -300,7 +299,6 @@ func (s *State) checkUpdateStatus(
|
|||
return err
|
||||
}
|
||||
appUpdateStatus.available = appVersionRemote.GreaterThan(appVersionLocal)
|
||||
appUpdateStatus.downgradeAvailable = appVersionRemote.LessThan(appVersionLocal)
|
||||
|
||||
// Handle pre-release updates
|
||||
isRemoteSystemPreRelease := systemVersionRemote.Prerelease() != ""
|
||||
|
|
@ -313,6 +311,15 @@ func (s *State) checkUpdateStatus(
|
|||
appUpdateStatus.available = false
|
||||
}
|
||||
|
||||
// Handle custom target versions
|
||||
if slices.Contains(params.Components, "app") && params.AppTargetVersion != "" {
|
||||
appUpdateStatus.available = appVersionRemote.String() != appUpdateStatus.localVersion
|
||||
}
|
||||
|
||||
if slices.Contains(params.Components, "system") && params.SystemTargetVersion != "" {
|
||||
systemUpdateStatus.available = systemVersionRemote.String() != systemUpdateStatus.localVersion
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,12 +28,10 @@ type LocalMetadata struct {
|
|||
|
||||
// UpdateStatus represents the current update status
|
||||
type UpdateStatus struct {
|
||||
Local *LocalMetadata `json:"local"`
|
||||
Remote *UpdateMetadata `json:"remote"`
|
||||
SystemUpdateAvailable bool `json:"systemUpdateAvailable"`
|
||||
SystemDowngradeAvailable bool `json:"systemDowngradeAvailable"`
|
||||
AppUpdateAvailable bool `json:"appUpdateAvailable"`
|
||||
AppDowngradeAvailable bool `json:"appDowngradeAvailable"`
|
||||
Local *LocalMetadata `json:"local"`
|
||||
Remote *UpdateMetadata `json:"remote"`
|
||||
SystemUpdateAvailable bool `json:"systemUpdateAvailable"`
|
||||
AppUpdateAvailable bool `json:"appUpdateAvailable"`
|
||||
|
||||
// for backwards compatibility
|
||||
Error string `json:"error,omitempty"`
|
||||
|
|
@ -50,7 +48,6 @@ type PostRebootAction struct {
|
|||
type componentUpdateStatus struct {
|
||||
pending bool
|
||||
available bool
|
||||
downgradeAvailable bool
|
||||
version string
|
||||
localVersion string
|
||||
targetVersion string
|
||||
|
|
@ -170,11 +167,9 @@ func toUpdateStatus(appUpdate *componentUpdateStatus, systemUpdate *componentUpd
|
|||
SystemURL: systemUpdate.url,
|
||||
SystemHash: systemUpdate.hash,
|
||||
},
|
||||
SystemUpdateAvailable: systemUpdate.available,
|
||||
SystemDowngradeAvailable: systemUpdate.downgradeAvailable,
|
||||
AppUpdateAvailable: appUpdate.available,
|
||||
AppDowngradeAvailable: appUpdate.downgradeAvailable,
|
||||
Error: error,
|
||||
SystemUpdateAvailable: systemUpdate.available,
|
||||
AppUpdateAvailable: appUpdate.available,
|
||||
Error: error,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1155,7 +1155,6 @@ var rpcHandlers = map[string]RPCHandler{
|
|||
"getUpdateStatusChannel": {Func: rpcGetUpdateStatusChannel},
|
||||
"tryUpdate": {Func: rpcTryUpdate},
|
||||
"tryUpdateComponents": {Func: rpcTryUpdateComponents, Params: []string{"params", "includePreRelease", "resetConfig"}},
|
||||
"cancelDowngrade": {Func: rpcCancelDowngrade},
|
||||
"getDevModeState": {Func: rpcGetDevModeState},
|
||||
"setDevModeState": {Func: rpcSetDevModeState, Params: []string{"enabled"}},
|
||||
"getSSHKeyState": {Func: rpcGetSSHKeyState},
|
||||
|
|
|
|||
10
ota.go
10
ota.go
|
|
@ -194,13 +194,3 @@ func rpcTryUpdateComponents(params updateParams, includePreRelease bool, resetCo
|
|||
}()
|
||||
return nil
|
||||
}
|
||||
|
||||
func rpcCancelDowngrade() error {
|
||||
if err := otaState.SetTargetVersion("app", ""); err != nil {
|
||||
return fmt.Errorf("failed to set app target version: %w", err)
|
||||
}
|
||||
if err := otaState.SetTargetVersion("system", ""); err != nil {
|
||||
return fmt.Errorf("failed to set system target version: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -554,7 +554,6 @@ export type UpdateModalViews =
|
|||
| "updating"
|
||||
| "upToDate"
|
||||
| "updateAvailable"
|
||||
| "updateDowngradeAvailable"
|
||||
| "updateCompleted"
|
||||
| "error";
|
||||
|
||||
|
|
|
|||
|
|
@ -15,9 +15,7 @@ export interface SystemVersionInfo {
|
|||
local: VersionInfo;
|
||||
remote?: VersionInfo;
|
||||
systemUpdateAvailable: boolean;
|
||||
systemDowngradeAvailable: boolean;
|
||||
appUpdateAvailable: boolean;
|
||||
appDowngradeAvailable: boolean;
|
||||
error?: string;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -185,10 +185,10 @@ export default function SettingsAdvancedRoute() {
|
|||
setShowLoopbackWarning(false);
|
||||
}, [applyLoopbackOnlyMode, setShowLoopbackWarning]);
|
||||
|
||||
const handleVersionUpdateError = useCallback((error?: JsonRpcError) => {
|
||||
const handleVersionUpdateError = useCallback((error?: JsonRpcError | string) => {
|
||||
notifications.error(
|
||||
m.advanced_error_version_update({
|
||||
error: error?.data ?? error?.message ?? m.unknown_error()
|
||||
error: typeof error === "string" ? error : (error?.data ?? error?.message ?? m.unknown_error())
|
||||
}),
|
||||
{ duration: 1000 * 15 } // 15 seconds
|
||||
);
|
||||
|
|
@ -214,15 +214,31 @@ export default function SettingsAdvancedRoute() {
|
|||
return;
|
||||
}
|
||||
|
||||
console.debug("versionInfo", versionInfo, components.includes("app") && versionInfo.remote?.appVersion && versionInfo?.appUpdateAvailable, components.includes("system") && versionInfo.remote?.systemVersion && versionInfo?.systemUpdateAvailable);
|
||||
console.debug("components", components);
|
||||
console.debug("versionInfo.remote?.appVersion", versionInfo.remote?.appVersion);
|
||||
console.debug("versionInfo.appUpdateAvailable", versionInfo?.appUpdateAvailable);
|
||||
console.debug("versionInfo.remote?.systemVersion", versionInfo.remote?.systemVersion);
|
||||
console.debug("versionInfo.systemUpdateAvailable", versionInfo?.systemUpdateAvailable);
|
||||
|
||||
let hasUpdate = false;
|
||||
|
||||
const pageParams = new URLSearchParams();
|
||||
if (components.includes("app") && versionInfo.remote?.appVersion && versionInfo.appDowngradeAvailable) {
|
||||
if (components.includes("app") && versionInfo.remote?.appVersion && versionInfo.appUpdateAvailable) {
|
||||
hasUpdate = true;
|
||||
pageParams.set("custom_app_version", versionInfo.remote?.appVersion);
|
||||
}
|
||||
if (components.includes("system") && versionInfo.remote?.systemVersion && versionInfo.systemDowngradeAvailable) {
|
||||
if (components.includes("system") && versionInfo.remote?.systemVersion && versionInfo.systemUpdateAvailable) {
|
||||
hasUpdate = true;
|
||||
pageParams.set("custom_system_version", versionInfo.remote?.systemVersion);
|
||||
}
|
||||
pageParams.set("reset_config", resetConfig.toString());
|
||||
|
||||
if (!hasUpdate) {
|
||||
handleVersionUpdateError("No update available");
|
||||
return;
|
||||
}
|
||||
|
||||
// Navigate to update page
|
||||
navigateTo(`/settings/general/update?${pageParams.toString()}`);
|
||||
}, [
|
||||
|
|
|
|||
|
|
@ -443,7 +443,6 @@ function SystemUpToDateState({
|
|||
|
||||
function UpdateAvailableState({
|
||||
versionInfo,
|
||||
forceCustomUpdate,
|
||||
onConfirm,
|
||||
onClose,
|
||||
}: {
|
||||
|
|
@ -462,13 +461,13 @@ function UpdateAvailableState({
|
|||
{m.general_update_available_description()}
|
||||
</p>
|
||||
<p className="mb-4 text-sm text-slate-600 dark:text-slate-300">
|
||||
{(forceCustomUpdate ? versionInfo?.systemDowngradeAvailable : versionInfo?.systemUpdateAvailable) ? (
|
||||
{versionInfo?.systemUpdateAvailable ? (
|
||||
<>
|
||||
<span className="font-semibold">{m.general_update_system_type()}</span>: {versionInfo?.local?.systemVersion} <span className="text-slate-600 dark:text-slate-300">→</span> {versionInfo?.remote?.systemVersion}
|
||||
<br />
|
||||
</>
|
||||
) : null}
|
||||
{(forceCustomUpdate ? versionInfo?.appDowngradeAvailable : versionInfo?.appUpdateAvailable) ? (
|
||||
{versionInfo?.appUpdateAvailable ? (
|
||||
<>
|
||||
<span className="font-semibold">{m.general_update_application_type()}</span>: {versionInfo?.local?.appVersion} <span className="text-slate-600 dark:text-slate-300">→</span> {versionInfo?.remote?.appVersion}
|
||||
</>
|
||||
|
|
|
|||
|
|
@ -220,9 +220,7 @@ export interface SystemVersionInfo {
|
|||
local: VersionInfo;
|
||||
remote?: VersionInfo;
|
||||
systemUpdateAvailable: boolean;
|
||||
systemDowngradeAvailable: boolean;
|
||||
appUpdateAvailable: boolean;
|
||||
appDowngradeAvailable: boolean;
|
||||
error?: string;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue