GODT-1978: Check latest version on force update if unknown

This commit is contained in:
James Houlahan
2022-11-04 15:18:09 +01:00
parent 8a666dc8cc
commit b9ffa96e8b
2 changed files with 31 additions and 4 deletions

View File

@ -106,10 +106,8 @@ func (event UpdateFailed) String() string {
// UpdateForced is published when the bridge version is too old and must be updated.
type UpdateForced struct {
eventBase
Version updater.VersionInfo
}
func (event UpdateForced) String() string {
return fmt.Sprintf("UpdateForced: Version %s", event.Version.Version)
return fmt.Sprintf("UpdateForced")
}

View File

@ -293,7 +293,17 @@ func (s *Service) watchEvents() {
}
case events.UpdateForced:
_ = s.SendEvent(NewUpdateForceEvent(event.Version.Version.String()))
var latest string
if s.latest.Version != nil {
latest = s.latest.Version.String()
} else if version, ok := s.checkLatestVersion(); ok {
latest = version.Version.String()
} else {
latest = "unknown"
}
_ = s.SendEvent(NewUpdateForceEvent(latest))
case events.TLSIssue:
_ = s.SendEvent(NewMailApiCertIssue())
@ -368,6 +378,25 @@ func (s *Service) triggerReset() {
s.bridge.FactoryReset(context.Background())
}
func (s *Service) checkLatestVersion() (updater.VersionInfo, bool) {
updateCh, done := s.bridge.GetEvents(events.UpdateLatest{})
defer done()
s.bridge.CheckForUpdates()
select {
case event := <-updateCh:
if latest, ok := event.(events.UpdateLatest); ok {
return latest.Version, true
}
case <-time.After(5 * time.Second):
// ...
}
return updater.VersionInfo{}, false
}
func newTLSConfig() (*tls.Config, []byte, error) {
template, err := certs.NewTLSTemplate()
if err != nil {