mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-13 06:06:44 +00:00
GODT-1543: Using one buffered event for off and on connection
This commit is contained in:
@ -192,8 +192,8 @@ func New( // nolint[funlen]
|
|||||||
sentryReporter.SetClientFromManager(cm)
|
sentryReporter.SetClientFromManager(cm)
|
||||||
|
|
||||||
cm.AddConnectionObserver(pmapi.NewConnectionObserver(
|
cm.AddConnectionObserver(pmapi.NewConnectionObserver(
|
||||||
func() { listener.Emit(events.InternetOffEvent, "") },
|
func() { listener.Emit(events.InternetConnChangedEvent, events.InternetOff) },
|
||||||
func() { listener.Emit(events.InternetOnEvent, "") },
|
func() { listener.Emit(events.InternetConnChangedEvent, events.InternetOn) },
|
||||||
))
|
))
|
||||||
|
|
||||||
jar, err := cookies.NewCookieJar(settingsObj)
|
jar, err := cookies.NewCookieJar(settingsObj)
|
||||||
|
|||||||
@ -34,8 +34,9 @@ const (
|
|||||||
AddressChangedLogoutEvent = "addressChangedLogout"
|
AddressChangedLogoutEvent = "addressChangedLogout"
|
||||||
UserRefreshEvent = "userRefresh"
|
UserRefreshEvent = "userRefresh"
|
||||||
RestartBridgeEvent = "restartBridge"
|
RestartBridgeEvent = "restartBridge"
|
||||||
InternetOffEvent = "internetOff"
|
InternetConnChangedEvent = "internetChanged"
|
||||||
InternetOnEvent = "internetOn"
|
InternetOff = "internetOff"
|
||||||
|
InternetOn = "internetOn"
|
||||||
SecondInstanceEvent = "secondInstance"
|
SecondInstanceEvent = "secondInstance"
|
||||||
OutgoingNoEncEvent = "outgoingNoEncryption"
|
OutgoingNoEncEvent = "outgoingNoEncryption"
|
||||||
NoActiveKeyForRecipientEvent = "noActiveKeyForRecipient"
|
NoActiveKeyForRecipientEvent = "noActiveKeyForRecipient"
|
||||||
@ -52,7 +53,7 @@ func SetupEvents(listener listener.Listener) {
|
|||||||
listener.SetLimit(LogoutEvent, LogoutEventTimeout)
|
listener.SetLimit(LogoutEvent, LogoutEventTimeout)
|
||||||
listener.SetBuffer(ErrorEvent)
|
listener.SetBuffer(ErrorEvent)
|
||||||
listener.SetBuffer(CredentialsErrorEvent)
|
listener.SetBuffer(CredentialsErrorEvent)
|
||||||
listener.SetBuffer(InternetOffEvent)
|
listener.SetBuffer(InternetConnChangedEvent)
|
||||||
listener.SetBuffer(UpgradeApplicationEvent)
|
listener.SetBuffer(UpgradeApplicationEvent)
|
||||||
listener.SetBuffer(TLSCertIssue)
|
listener.SetBuffer(TLSCertIssue)
|
||||||
listener.SetBuffer(UserRefreshEvent)
|
listener.SetBuffer(UserRefreshEvent)
|
||||||
|
|||||||
@ -244,8 +244,7 @@ func New( //nolint[funlen]
|
|||||||
func (f *frontendCLI) watchEvents() {
|
func (f *frontendCLI) watchEvents() {
|
||||||
errorCh := f.eventListener.ProvideChannel(events.ErrorEvent)
|
errorCh := f.eventListener.ProvideChannel(events.ErrorEvent)
|
||||||
credentialsErrorCh := f.eventListener.ProvideChannel(events.CredentialsErrorEvent)
|
credentialsErrorCh := f.eventListener.ProvideChannel(events.CredentialsErrorEvent)
|
||||||
internetOffCh := f.eventListener.ProvideChannel(events.InternetOffEvent)
|
internetConnChangedCh := f.eventListener.ProvideChannel(events.InternetConnChangedEvent)
|
||||||
internetOnCh := f.eventListener.ProvideChannel(events.InternetOnEvent)
|
|
||||||
addressChangedCh := f.eventListener.ProvideChannel(events.AddressChangedEvent)
|
addressChangedCh := f.eventListener.ProvideChannel(events.AddressChangedEvent)
|
||||||
addressChangedLogoutCh := f.eventListener.ProvideChannel(events.AddressChangedLogoutEvent)
|
addressChangedLogoutCh := f.eventListener.ProvideChannel(events.AddressChangedLogoutEvent)
|
||||||
logoutCh := f.eventListener.ProvideChannel(events.LogoutEvent)
|
logoutCh := f.eventListener.ProvideChannel(events.LogoutEvent)
|
||||||
@ -256,10 +255,13 @@ func (f *frontendCLI) watchEvents() {
|
|||||||
f.Println("Bridge failed:", errorDetails)
|
f.Println("Bridge failed:", errorDetails)
|
||||||
case <-credentialsErrorCh:
|
case <-credentialsErrorCh:
|
||||||
f.notifyCredentialsError()
|
f.notifyCredentialsError()
|
||||||
case <-internetOffCh:
|
case stat := <-internetConnChangedCh:
|
||||||
f.notifyInternetOff()
|
if stat == events.InternetOff {
|
||||||
case <-internetOnCh:
|
f.notifyInternetOff()
|
||||||
f.notifyInternetOn()
|
}
|
||||||
|
if stat == events.InternetOn {
|
||||||
|
f.notifyInternetOn()
|
||||||
|
}
|
||||||
case address := <-addressChangedCh:
|
case address := <-addressChangedCh:
|
||||||
f.Printf("Address changed for %s. You may need to reconfigure your email client.", address)
|
f.Printf("Address changed for %s. You may need to reconfigure your email client.", address)
|
||||||
case address := <-addressChangedLogoutCh:
|
case address := <-addressChangedLogoutCh:
|
||||||
|
|||||||
@ -40,8 +40,7 @@ func (f *FrontendQt) watchEvents() {
|
|||||||
errorCh := f.eventListener.ProvideChannel(events.ErrorEvent)
|
errorCh := f.eventListener.ProvideChannel(events.ErrorEvent)
|
||||||
credentialsErrorCh := f.eventListener.ProvideChannel(events.CredentialsErrorEvent)
|
credentialsErrorCh := f.eventListener.ProvideChannel(events.CredentialsErrorEvent)
|
||||||
noActiveKeyForRecipientCh := f.eventListener.ProvideChannel(events.NoActiveKeyForRecipientEvent)
|
noActiveKeyForRecipientCh := f.eventListener.ProvideChannel(events.NoActiveKeyForRecipientEvent)
|
||||||
internetOffCh := f.eventListener.ProvideChannel(events.InternetOffEvent)
|
internetConnChangedCh := f.eventListener.ProvideChannel(events.InternetConnChangedEvent)
|
||||||
internetOnCh := f.eventListener.ProvideChannel(events.InternetOnEvent)
|
|
||||||
secondInstanceCh := f.eventListener.ProvideChannel(events.SecondInstanceEvent)
|
secondInstanceCh := f.eventListener.ProvideChannel(events.SecondInstanceEvent)
|
||||||
restartBridgeCh := f.eventListener.ProvideChannel(events.RestartBridgeEvent)
|
restartBridgeCh := f.eventListener.ProvideChannel(events.RestartBridgeEvent)
|
||||||
addressChangedCh := f.eventListener.ProvideChannel(events.AddressChangedEvent)
|
addressChangedCh := f.eventListener.ProvideChannel(events.AddressChangedEvent)
|
||||||
@ -73,10 +72,13 @@ func (f *FrontendQt) watchEvents() {
|
|||||||
f.qml.NotifyHasNoKeychain()
|
f.qml.NotifyHasNoKeychain()
|
||||||
case email := <-noActiveKeyForRecipientCh:
|
case email := <-noActiveKeyForRecipientCh:
|
||||||
f.qml.NoActiveKeyForRecipient(email)
|
f.qml.NoActiveKeyForRecipient(email)
|
||||||
case <-internetOffCh:
|
case stat := <-internetConnChangedCh:
|
||||||
f.qml.InternetOff()
|
if stat == events.InternetOff {
|
||||||
case <-internetOnCh:
|
f.qml.InternetOff()
|
||||||
f.qml.InternetOn()
|
}
|
||||||
|
if stat == events.InternetOn {
|
||||||
|
f.qml.InternetOn()
|
||||||
|
}
|
||||||
case <-secondInstanceCh:
|
case <-secondInstanceCh:
|
||||||
f.qml.ShowMainWindow()
|
f.qml.ShowMainWindow()
|
||||||
case <-restartBridgeCh:
|
case <-restartBridgeCh:
|
||||||
|
|||||||
@ -102,14 +102,17 @@ func New(
|
|||||||
|
|
||||||
func (u *Users) watchEvents() {
|
func (u *Users) watchEvents() {
|
||||||
upgradeCh := u.events.ProvideChannel(events.UpgradeApplicationEvent)
|
upgradeCh := u.events.ProvideChannel(events.UpgradeApplicationEvent)
|
||||||
internetOnCh := u.events.ProvideChannel(events.InternetOnEvent)
|
internetConnChangedCh := u.events.ProvideChannel(events.InternetConnChangedEvent)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-upgradeCh:
|
case <-upgradeCh:
|
||||||
isApplicationOutdated = true
|
isApplicationOutdated = true
|
||||||
u.closeAllConnections()
|
u.closeAllConnections()
|
||||||
case <-internetOnCh:
|
case stat := <-internetConnChangedCh:
|
||||||
|
if stat != events.InternetOn {
|
||||||
|
continue
|
||||||
|
}
|
||||||
for _, user := range u.users {
|
for _, user := range u.users {
|
||||||
if user.store == nil {
|
if user.store == nil {
|
||||||
if err := user.loadStore(); err != nil {
|
if err := user.loadStore(); err != nil {
|
||||||
|
|||||||
@ -244,7 +244,7 @@ func testNewUsersWithUsers(t *testing.T, m mocks) *Users {
|
|||||||
|
|
||||||
func testNewUsers(t *testing.T, m mocks) *Users { //nolint[unparam]
|
func testNewUsers(t *testing.T, m mocks) *Users { //nolint[unparam]
|
||||||
m.eventListener.EXPECT().ProvideChannel(events.UpgradeApplicationEvent)
|
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)
|
users := New(m.locator, m.PanicHandler, m.eventListener, m.clientManager, m.credentialsStore, m.storeMaker)
|
||||||
|
|
||||||
|
|||||||
@ -68,7 +68,7 @@ func newPMAPIController(listener listener.Listener) (PMAPIController, pmapi.Mana
|
|||||||
|
|
||||||
func addConnectionObserver(cm pmapi.Manager, listener listener.Listener) {
|
func addConnectionObserver(cm pmapi.Manager, listener listener.Listener) {
|
||||||
cm.AddConnectionObserver(pmapi.NewConnectionObserver(
|
cm.AddConnectionObserver(pmapi.NewConnectionObserver(
|
||||||
func() { listener.Emit(events.InternetOffEvent, "") },
|
func() { listener.Emit(events.InternetConnChangedEvent, events.InternetOff) },
|
||||||
func() { listener.Emit(events.InternetOnEvent, "") },
|
func() { listener.Emit(events.InternetConnChangedEvent, events.InternetOn) },
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user