@@ -41,6 +41,9 @@ type UpdateStatus struct {
41
41
Remote * UpdateMetadata `json:"remote"`
42
42
SystemUpdateAvailable bool `json:"systemUpdateAvailable"`
43
43
AppUpdateAvailable bool `json:"appUpdateAvailable"`
44
+
45
+ // for backwards compatibility
46
+ Error string `json:"error,omitempty"`
44
47
}
45
48
46
49
const UpdateMetadataUrl = "https://api.jetkvm.com/releases"
@@ -489,52 +492,47 @@ func TryUpdate(ctx context.Context, deviceId string, includePreRelease bool) err
489
492
}
490
493
491
494
func GetUpdateStatus (ctx context.Context , deviceId string , includePreRelease bool ) (* UpdateStatus , error ) {
495
+ updateStatus := & UpdateStatus {}
496
+
492
497
// Get local versions
493
498
systemVersionLocal , appVersionLocal , err := GetLocalVersion ()
494
499
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 (),
496
505
}
497
506
498
507
// Get remote metadata
499
508
remoteMetadata , err := fetchUpdateMetadata (ctx , deviceId , includePreRelease )
500
509
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 )
508
511
}
512
+ updateStatus .Remote = remoteMetadata
509
513
514
+ // Get remote versions
510
515
systemVersionRemote , err := semver .NewVersion (remoteMetadata .SystemVersion )
511
516
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 )
513
518
}
514
519
appVersionRemote , err := semver .NewVersion (remoteMetadata .AppVersion )
515
520
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 )
517
522
}
518
523
519
- systemUpdateAvailable : = systemVersionRemote .GreaterThan (systemVersionLocal )
520
- appUpdateAvailable : = appVersionRemote .GreaterThan (appVersionLocal )
524
+ updateStatus . SystemUpdateAvailable = systemVersionRemote .GreaterThan (systemVersionLocal )
525
+ updateStatus . AppUpdateAvailable = appVersionRemote .GreaterThan (appVersionLocal )
521
526
522
527
// Handle pre-release updates
523
528
isRemoteSystemPreRelease := systemVersionRemote .Prerelease () != ""
524
529
isRemoteAppPreRelease := appVersionRemote .Prerelease () != ""
525
530
526
531
if isRemoteSystemPreRelease && ! includePreRelease {
527
- systemUpdateAvailable = false
532
+ updateStatus . SystemUpdateAvailable = false
528
533
}
529
534
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
538
536
}
539
537
540
538
return updateStatus , nil
0 commit comments