From 8e5040a35751b6b75ad47ea6a76a5ea636b10bc8 Mon Sep 17 00:00:00 2001 From: Xavier Michelon Date: Mon, 28 Nov 2022 17:49:31 +0100 Subject: [PATCH] GODT-1910: fix GUI not being notified of SMTP SSL being turned on by ConfigureAppleMail. --- internal/frontend/grpc/service_methods.go | 16 ++++++++++------ internal/frontend/grpc/service_user.go | 7 +++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/internal/frontend/grpc/service_methods.go b/internal/frontend/grpc/service_methods.go index c63203c6..e0f27b2b 100644 --- a/internal/frontend/grpc/service_methods.go +++ b/internal/frontend/grpc/service_methods.go @@ -670,12 +670,7 @@ func (s *Service) SetMailServerSettings(_ context.Context, settings *ImapSmtpSet } } - _ = s.SendEvent(NewMailServerSettingsChangedEvent(&ImapSmtpSettings{ - ImapPort: int32(s.bridge.GetIMAPPort()), - SmtpPort: int32(s.bridge.GetSMTPPort()), - UseSSLForImap: s.bridge.GetIMAPSSL(), - UseSSLForSmtp: s.bridge.GetSMTPSSL(), - })) + _ = s.SendEvent(NewMailServerSettingsChangedEvent(s.getMailServerSettings())) return &emptypb.Empty{}, nil } @@ -744,3 +739,12 @@ func base64Decode(in []byte) ([]byte, error) { return out[:n], nil } + +func (s *Service) getMailServerSettings() *ImapSmtpSettings { + return &ImapSmtpSettings{ + ImapPort: int32(s.bridge.GetIMAPPort()), + SmtpPort: int32(s.bridge.GetSMTPPort()), + UseSSLForImap: s.bridge.GetIMAPSSL(), + UseSSLForSmtp: s.bridge.GetSMTPSSL(), + } +} diff --git a/internal/frontend/grpc/service_user.go b/internal/frontend/grpc/service_user.go index b54b3fb7..45fb1119 100644 --- a/internal/frontend/grpc/service_user.go +++ b/internal/frontend/grpc/service_user.go @@ -131,10 +131,17 @@ func (s *Service) RemoveUser(ctx context.Context, userID *wrapperspb.StringValue func (s *Service) ConfigureUserAppleMail(ctx context.Context, request *ConfigureAppleMailRequest) (*emptypb.Empty, error) { s.log.WithField("UserID", request.UserID).WithField("Address", request.Address).Debug("ConfigureUserAppleMail") + sslWasEnabled := s.bridge.GetSMTPSSL() + if err := s.bridge.ConfigureAppleMail(request.UserID, request.Address); err != nil { s.log.WithField("userID", request.UserID).Error("Cannot configure AppleMail for user") return nil, status.Error(codes.Internal, "Apple Mail config failed") } + if s.bridge.GetSMTPSSL() != sslWasEnabled { + // we've changed SMTP SSL settings. This will happen if SSL was off and macOS >= Catalina. We must inform gRPC clients. + _ = s.SendEvent(NewMailServerSettingsChangedEvent(s.getMailServerSettings())) + } + return &emptypb.Empty{}, nil }