From a74d1ce9ca9c46509eacb82707498557a0aeff18 Mon Sep 17 00:00:00 2001 From: James Houlahan Date: Wed, 1 Feb 2023 13:38:16 +0100 Subject: [PATCH] feat(GODT-2144): Handle IMAP/SMTP server errors via event stream --- internal/bridge/errors.go | 5 +---- internal/frontend/cli/frontend.go | 12 ++++++------ internal/frontend/grpc/service.go | 12 ++++++------ 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/internal/bridge/errors.go b/internal/bridge/errors.go index 98377649..ecb897f4 100644 --- a/internal/bridge/errors.go +++ b/internal/bridge/errors.go @@ -22,10 +22,7 @@ import "errors" var ( ErrVaultInsecure = errors.New("the vault is insecure") ErrVaultCorrupt = errors.New("the vault is corrupt") - - ErrServeIMAP = errors.New("failed to serve IMAP") - ErrServeSMTP = errors.New("failed to serve SMTP") - ErrWatchUpdates = errors.New("failed to watch for updates") + ErrWatchUpdates = errors.New("failed to watch for updates") ErrNoSuchUser = errors.New("no such user") ErrUserAlreadyExists = errors.New("user already exists") diff --git a/internal/frontend/cli/frontend.go b/internal/frontend/cli/frontend.go index aac7d258..58ee6c4b 100644 --- a/internal/frontend/cli/frontend.go +++ b/internal/frontend/cli/frontend.go @@ -270,12 +270,6 @@ func (f *frontendCLI) watchEvents(eventCh <-chan events.Event) { // nolint:funle case errors.Is(err, bridge.ErrVaultInsecure): f.notifyCredentialsError() - - case errors.Is(err, bridge.ErrServeIMAP): - f.Println("IMAP server error:", err) - - case errors.Is(err, bridge.ErrServeSMTP): - f.Println("SMTP server error:", err) } } @@ -287,6 +281,12 @@ func (f *frontendCLI) watchEvents(eventCh <-chan events.Event) { // nolint:funle case events.ConnStatusDown: f.notifyInternetOff() + case events.IMAPServerError: + f.Println("IMAP server error:", event.Error) + + case events.SMTPServerError: + f.Println("SMTP server error:", event.Error) + case events.UserDeauth: user, err := f.bridge.GetUserInfo(event.UserID) if err != nil { diff --git a/internal/frontend/grpc/service.go b/internal/frontend/grpc/service.go index 8ec8834a..7d0bdfd4 100644 --- a/internal/frontend/grpc/service.go +++ b/internal/frontend/grpc/service.go @@ -256,12 +256,6 @@ func (s *Service) watchEvents() { case errors.Is(err, bridge.ErrVaultInsecure): _ = s.SendEvent(NewKeychainHasNoKeychainEvent()) - - case errors.Is(err, bridge.ErrServeIMAP): - _ = s.SendEvent(NewMailServerSettingsErrorEvent(MailServerSettingsErrorType_IMAP_PORT_STARTUP_ERROR)) - - case errors.Is(err, bridge.ErrServeSMTP): - _ = s.SendEvent(NewMailServerSettingsErrorEvent(MailServerSettingsErrorType_SMTP_PORT_STARTUP_ERROR)) } } @@ -273,6 +267,12 @@ func (s *Service) watchEvents() { case events.ConnStatusDown: _ = s.SendEvent(NewInternetStatusEvent(false)) + case events.IMAPServerError: + _ = s.SendEvent(NewMailServerSettingsErrorEvent(MailServerSettingsErrorType_IMAP_PORT_STARTUP_ERROR)) + + case events.SMTPServerError: + _ = s.SendEvent(NewMailServerSettingsErrorEvent(MailServerSettingsErrorType_SMTP_PORT_STARTUP_ERROR)) + case events.Raise: _ = s.SendEvent(NewShowMainWindowEvent())