@@ -41,6 +41,9 @@ type UpdateStatus struct {
4141 Remote * UpdateMetadata `json:"remote"`
4242 SystemUpdateAvailable bool `json:"systemUpdateAvailable"`
4343 AppUpdateAvailable bool `json:"appUpdateAvailable"`
44+
45+ // for backwards compatibility
46+ Error string `json:"error,omitempty"`
4447}
4548
4649const UpdateMetadataUrl = "https://api.jetkvm.com/releases"
@@ -489,52 +492,47 @@ func TryUpdate(ctx context.Context, deviceId string, includePreRelease bool) err
489492}
490493
491494func GetUpdateStatus (ctx context.Context , deviceId string , includePreRelease bool ) (* UpdateStatus , error ) {
495+ updateStatus := & UpdateStatus {}
496+
492497 // Get local versions
493498 systemVersionLocal , appVersionLocal , err := GetLocalVersion ()
494499 if err != nil {
495- return nil , fmt .Errorf ("error getting local version: %w" , err )
500+ return updateStatus , fmt .Errorf ("error getting local version: %w" , err )
501+ }
502+ updateStatus .Local = & LocalMetadata {
503+ AppVersion : appVersionLocal .String (),
504+ SystemVersion : systemVersionLocal .String (),
496505 }
497506
498507 // Get remote metadata
499508 remoteMetadata , err := fetchUpdateMetadata (ctx , deviceId , includePreRelease )
500509 if err != nil {
501- return nil , fmt .Errorf ("error checking for updates: %w" , err )
502- }
503-
504- // Build local UpdateMetadata
505- localMetadata := & LocalMetadata {
506- AppVersion : appVersionLocal .String (),
507- SystemVersion : systemVersionLocal .String (),
510+ return updateStatus , fmt .Errorf ("error checking for updates: %w" , err )
508511 }
512+ updateStatus .Remote = remoteMetadata
509513
514+ // Get remote versions
510515 systemVersionRemote , err := semver .NewVersion (remoteMetadata .SystemVersion )
511516 if err != nil {
512- return nil , fmt .Errorf ("error parsing remote system version: %w" , err )
517+ return updateStatus , fmt .Errorf ("error parsing remote system version: %w" , err )
513518 }
514519 appVersionRemote , err := semver .NewVersion (remoteMetadata .AppVersion )
515520 if err != nil {
516- return nil , fmt .Errorf ("error parsing remote app version: %w, %s" , err , remoteMetadata .AppVersion )
521+ return updateStatus , fmt .Errorf ("error parsing remote app version: %w, %s" , err , remoteMetadata .AppVersion )
517522 }
518523
519- systemUpdateAvailable : = systemVersionRemote .GreaterThan (systemVersionLocal )
520- appUpdateAvailable : = appVersionRemote .GreaterThan (appVersionLocal )
524+ updateStatus . SystemUpdateAvailable = systemVersionRemote .GreaterThan (systemVersionLocal )
525+ updateStatus . AppUpdateAvailable = appVersionRemote .GreaterThan (appVersionLocal )
521526
522527 // Handle pre-release updates
523528 isRemoteSystemPreRelease := systemVersionRemote .Prerelease () != ""
524529 isRemoteAppPreRelease := appVersionRemote .Prerelease () != ""
525530
526531 if isRemoteSystemPreRelease && ! includePreRelease {
527- systemUpdateAvailable = false
532+ updateStatus . SystemUpdateAvailable = false
528533 }
529534 if isRemoteAppPreRelease && ! includePreRelease {
530- appUpdateAvailable = false
531- }
532-
533- updateStatus := & UpdateStatus {
534- Local : localMetadata ,
535- Remote : remoteMetadata ,
536- SystemUpdateAvailable : systemUpdateAvailable ,
537- AppUpdateAvailable : appUpdateAvailable ,
535+ updateStatus .AppUpdateAvailable = false
538536 }
539537
540538 return updateStatus , nil
0 commit comments