diff --git a/internal/app/base/base.go b/internal/app/base/base.go index b8b8f89a..e70bb98d 100644 --- a/internal/app/base/base.go +++ b/internal/app/base/base.go @@ -192,8 +192,8 @@ func New( // nolint[funlen] sentryReporter.SetClientFromManager(cm) cm.AddConnectionObserver(pmapi.NewConnectionObserver( - func() { listener.Emit(events.InternetOffEvent, "") }, - func() { listener.Emit(events.InternetOnEvent, "") }, + func() { listener.Emit(events.InternetConnChangedEvent, events.InternetOff) }, + func() { listener.Emit(events.InternetConnChangedEvent, events.InternetOn) }, )) jar, err := cookies.NewCookieJar(settingsObj) diff --git a/internal/events/events.go b/internal/events/events.go index 9f5eaaa8..a2e7f54b 100644 --- a/internal/events/events.go +++ b/internal/events/events.go @@ -34,8 +34,9 @@ const ( AddressChangedLogoutEvent = "addressChangedLogout" UserRefreshEvent = "userRefresh" RestartBridgeEvent = "restartBridge" - InternetOffEvent = "internetOff" - InternetOnEvent = "internetOn" + InternetConnChangedEvent = "internetChanged" + InternetOff = "internetOff" + InternetOn = "internetOn" SecondInstanceEvent = "secondInstance" OutgoingNoEncEvent = "outgoingNoEncryption" NoActiveKeyForRecipientEvent = "noActiveKeyForRecipient" @@ -52,7 +53,7 @@ func SetupEvents(listener listener.Listener) { listener.SetLimit(LogoutEvent, LogoutEventTimeout) listener.SetBuffer(ErrorEvent) listener.SetBuffer(CredentialsErrorEvent) - listener.SetBuffer(InternetOffEvent) + listener.SetBuffer(InternetConnChangedEvent) listener.SetBuffer(UpgradeApplicationEvent) listener.SetBuffer(TLSCertIssue) listener.SetBuffer(UserRefreshEvent) diff --git a/internal/frontend/cli/frontend.go b/internal/frontend/cli/frontend.go index e9c0a758..732a93be 100644 --- a/internal/frontend/cli/frontend.go +++ b/internal/frontend/cli/frontend.go @@ -244,8 +244,7 @@ func New( //nolint[funlen] func (f *frontendCLI) watchEvents() { errorCh := f.eventListener.ProvideChannel(events.ErrorEvent) credentialsErrorCh := f.eventListener.ProvideChannel(events.CredentialsErrorEvent) - internetOffCh := f.eventListener.ProvideChannel(events.InternetOffEvent) - internetOnCh := f.eventListener.ProvideChannel(events.InternetOnEvent) + internetConnChangedCh := f.eventListener.ProvideChannel(events.InternetConnChangedEvent) addressChangedCh := f.eventListener.ProvideChannel(events.AddressChangedEvent) addressChangedLogoutCh := f.eventListener.ProvideChannel(events.AddressChangedLogoutEvent) logoutCh := f.eventListener.ProvideChannel(events.LogoutEvent) @@ -256,10 +255,13 @@ func (f *frontendCLI) watchEvents() { f.Println("Bridge failed:", errorDetails) case <-credentialsErrorCh: f.notifyCredentialsError() - case <-internetOffCh: - f.notifyInternetOff() - case <-internetOnCh: - f.notifyInternetOn() + case stat := <-internetConnChangedCh: + if stat == events.InternetOff { + f.notifyInternetOff() + } + if stat == events.InternetOn { + f.notifyInternetOn() + } case address := <-addressChangedCh: f.Printf("Address changed for %s. You may need to reconfigure your email client.", address) case address := <-addressChangedLogoutCh: diff --git a/internal/frontend/qt/frontend_events.go b/internal/frontend/qt/frontend_events.go index b2242037..cf9ac28c 100644 --- a/internal/frontend/qt/frontend_events.go +++ b/internal/frontend/qt/frontend_events.go @@ -40,8 +40,7 @@ func (f *FrontendQt) watchEvents() { errorCh := f.eventListener.ProvideChannel(events.ErrorEvent) credentialsErrorCh := f.eventListener.ProvideChannel(events.CredentialsErrorEvent) noActiveKeyForRecipientCh := f.eventListener.ProvideChannel(events.NoActiveKeyForRecipientEvent) - internetOffCh := f.eventListener.ProvideChannel(events.InternetOffEvent) - internetOnCh := f.eventListener.ProvideChannel(events.InternetOnEvent) + internetConnChangedCh := f.eventListener.ProvideChannel(events.InternetConnChangedEvent) secondInstanceCh := f.eventListener.ProvideChannel(events.SecondInstanceEvent) restartBridgeCh := f.eventListener.ProvideChannel(events.RestartBridgeEvent) addressChangedCh := f.eventListener.ProvideChannel(events.AddressChangedEvent) @@ -73,10 +72,13 @@ func (f *FrontendQt) watchEvents() { f.qml.NotifyHasNoKeychain() case email := <-noActiveKeyForRecipientCh: f.qml.NoActiveKeyForRecipient(email) - case <-internetOffCh: - f.qml.InternetOff() - case <-internetOnCh: - f.qml.InternetOn() + case stat := <-internetConnChangedCh: + if stat == events.InternetOff { + f.qml.InternetOff() + } + if stat == events.InternetOn { + f.qml.InternetOn() + } case <-secondInstanceCh: f.qml.ShowMainWindow() case <-restartBridgeCh: diff --git a/internal/users/users.go b/internal/users/users.go index a68afc61..c044bc4f 100644 --- a/internal/users/users.go +++ b/internal/users/users.go @@ -102,14 +102,17 @@ func New( func (u *Users) watchEvents() { upgradeCh := u.events.ProvideChannel(events.UpgradeApplicationEvent) - internetOnCh := u.events.ProvideChannel(events.InternetOnEvent) + internetConnChangedCh := u.events.ProvideChannel(events.InternetConnChangedEvent) for { select { case <-upgradeCh: isApplicationOutdated = true u.closeAllConnections() - case <-internetOnCh: + case stat := <-internetConnChangedCh: + if stat != events.InternetOn { + continue + } for _, user := range u.users { if user.store == nil { if err := user.loadStore(); err != nil { diff --git a/internal/users/users_test.go b/internal/users/users_test.go index e1d60a96..98e8efbc 100644 --- a/internal/users/users_test.go +++ b/internal/users/users_test.go @@ -244,7 +244,7 @@ func testNewUsersWithUsers(t *testing.T, m mocks) *Users { func testNewUsers(t *testing.T, m mocks) *Users { //nolint[unparam] m.eventListener.EXPECT().ProvideChannel(events.UpgradeApplicationEvent) - m.eventListener.EXPECT().ProvideChannel(events.InternetOnEvent) + m.eventListener.EXPECT().ProvideChannel(events.InternetConnChangedEvent) users := New(m.locator, m.PanicHandler, m.eventListener, m.clientManager, m.credentialsStore, m.storeMaker) diff --git a/test/context/pmapi_controller.go b/test/context/pmapi_controller.go index d941bdf7..434fe471 100644 --- a/test/context/pmapi_controller.go +++ b/test/context/pmapi_controller.go @@ -68,7 +68,7 @@ func newPMAPIController(listener listener.Listener) (PMAPIController, pmapi.Mana func addConnectionObserver(cm pmapi.Manager, listener listener.Listener) { cm.AddConnectionObserver(pmapi.NewConnectionObserver( - func() { listener.Emit(events.InternetOffEvent, "") }, - func() { listener.Emit(events.InternetOnEvent, "") }, + func() { listener.Emit(events.InternetConnChangedEvent, events.InternetOff) }, + func() { listener.Emit(events.InternetConnChangedEvent, events.InternetOn) }, )) }