GODT-2122: Handle check for updates failure

This commit is contained in:
James Houlahan
2022-11-19 13:18:43 +01:00
parent 1517dd81e6
commit 0ce0e4765b
3 changed files with 22 additions and 4 deletions

View File

@ -365,7 +365,7 @@ func (bridge *Bridge) init(tlsReporter TLSReporter) error {
version, err := bridge.updater.GetVersionInfo(ctx, bridge.api, bridge.vault.GetUpdateChannel())
if err != nil {
logrus.WithError(err).Error("Failed to check for updates")
bridge.publish(events.UpdateCheckFailed{Error: err})
} else {
bridge.handleUpdate(version)
}

View File

@ -111,3 +111,14 @@ type UpdateForced struct {
func (event UpdateForced) String() string {
return "UpdateForced"
}
// UpdateCheckFailed is published when the update check fails.
type UpdateCheckFailed struct {
eventBase
Error error
}
func (event UpdateCheckFailed) String() string {
return fmt.Sprintf("UpdateCheckFailed: Error: %s", event.Error)
}

View File

@ -504,17 +504,24 @@ func (s *Service) CheckUpdate(context.Context, *emptypb.Empty) (*emptypb.Empty,
go func() {
defer s.panicHandler.HandlePanic()
updateCh, done := s.bridge.GetEvents(events.UpdateAvailable{}, events.UpdateNotAvailable{})
updateCh, done := s.bridge.GetEvents(
events.UpdateAvailable{},
events.UpdateNotAvailable{},
events.UpdateCheckFailed{},
)
defer done()
s.bridge.CheckForUpdates()
switch (<-updateCh).(type) {
case events.UpdateNotAvailable:
_ = s.SendEvent(NewUpdateIsLatestVersionEvent())
case events.UpdateAvailable:
// ... this is handled by the main event loop
case events.UpdateNotAvailable:
_ = s.SendEvent(NewUpdateIsLatestVersionEvent())
case events.UpdateCheckFailed:
// ... maybe show an error? but do nothing for now
}
_ = s.SendEvent(NewUpdateCheckFinishedEvent())