mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-18 16:17:03 +00:00
GODT-1978: Check latest version on force update if unknown
This commit is contained in:
@ -106,10 +106,8 @@ func (event UpdateFailed) String() string {
|
|||||||
// UpdateForced is published when the bridge version is too old and must be updated.
|
// UpdateForced is published when the bridge version is too old and must be updated.
|
||||||
type UpdateForced struct {
|
type UpdateForced struct {
|
||||||
eventBase
|
eventBase
|
||||||
|
|
||||||
Version updater.VersionInfo
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (event UpdateForced) String() string {
|
func (event UpdateForced) String() string {
|
||||||
return fmt.Sprintf("UpdateForced: Version %s", event.Version.Version)
|
return fmt.Sprintf("UpdateForced")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -293,7 +293,17 @@ func (s *Service) watchEvents() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case events.UpdateForced:
|
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:
|
case events.TLSIssue:
|
||||||
_ = s.SendEvent(NewMailApiCertIssue())
|
_ = s.SendEvent(NewMailApiCertIssue())
|
||||||
@ -368,6 +378,25 @@ func (s *Service) triggerReset() {
|
|||||||
s.bridge.FactoryReset(context.Background())
|
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) {
|
func newTLSConfig() (*tls.Config, []byte, error) {
|
||||||
template, err := certs.NewTLSTemplate()
|
template, err := certs.NewTLSTemplate()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user