forked from Silverfish/proton-bridge
GODT-2122: Handle check for updates failure
This commit is contained in:
@ -365,7 +365,7 @@ func (bridge *Bridge) init(tlsReporter TLSReporter) error {
|
|||||||
|
|
||||||
version, err := bridge.updater.GetVersionInfo(ctx, bridge.api, bridge.vault.GetUpdateChannel())
|
version, err := bridge.updater.GetVersionInfo(ctx, bridge.api, bridge.vault.GetUpdateChannel())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithError(err).Error("Failed to check for updates")
|
bridge.publish(events.UpdateCheckFailed{Error: err})
|
||||||
} else {
|
} else {
|
||||||
bridge.handleUpdate(version)
|
bridge.handleUpdate(version)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -111,3 +111,14 @@ type UpdateForced struct {
|
|||||||
func (event UpdateForced) String() string {
|
func (event UpdateForced) String() string {
|
||||||
return "UpdateForced"
|
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)
|
||||||
|
}
|
||||||
|
|||||||
@ -504,17 +504,24 @@ func (s *Service) CheckUpdate(context.Context, *emptypb.Empty) (*emptypb.Empty,
|
|||||||
go func() {
|
go func() {
|
||||||
defer s.panicHandler.HandlePanic()
|
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()
|
defer done()
|
||||||
|
|
||||||
s.bridge.CheckForUpdates()
|
s.bridge.CheckForUpdates()
|
||||||
|
|
||||||
switch (<-updateCh).(type) {
|
switch (<-updateCh).(type) {
|
||||||
|
case events.UpdateNotAvailable:
|
||||||
|
_ = s.SendEvent(NewUpdateIsLatestVersionEvent())
|
||||||
|
|
||||||
case events.UpdateAvailable:
|
case events.UpdateAvailable:
|
||||||
// ... this is handled by the main event loop
|
// ... this is handled by the main event loop
|
||||||
|
|
||||||
case events.UpdateNotAvailable:
|
case events.UpdateCheckFailed:
|
||||||
_ = s.SendEvent(NewUpdateIsLatestVersionEvent())
|
// ... maybe show an error? but do nothing for now
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = s.SendEvent(NewUpdateCheckFinishedEvent())
|
_ = s.SendEvent(NewUpdateCheckFinishedEvent())
|
||||||
|
|||||||
Reference in New Issue
Block a user