From ad2636e04dd4ee2eb39d73065d216814237d21ee Mon Sep 17 00:00:00 2001 From: Michael Gratton Date: Fri, 22 Feb 2019 15:10:45 +1100 Subject: [PATCH] Don't use GOA accounts with no valid IMAP/SMTP host names This fixes GOA Exchange accounts showing up but being completely unusable, e.g. in #241 --- src/client/accounts/accounts-manager.vala | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/client/accounts/accounts-manager.vala b/src/client/accounts/accounts-manager.vala index 426cb28a..1e2f7944 100644 --- a/src/client/accounts/accounts-manager.vala +++ b/src/client/accounts/accounts-manager.vala @@ -610,7 +610,7 @@ public class Accounts.Manager : GLib.Object { throw new ConfigError.MANAGEMENT(err.message); } - if (goa_handle.get_mail() == null) { + if (!is_valid_goa_account(goa_handle)) { // If we get here, the GOA account's mail service used // to exist (we just loaded Geary's config for it) but // no longer does. This indicates the mail service has @@ -783,12 +783,21 @@ public class Accounts.Manager : GLib.Object { : id; } - private async void create_goa_account(Goa.Object account, - GLib.Cancellable? cancellable) { + private bool is_valid_goa_account(Goa.Object handle) { // Goa.Account.mail_disabled doesn't seem to reflect if we get // get a valid mail object here, so just rely on that instead. - Goa.Mail? mail = account.get_mail(); - if (mail != null) { + Goa.Mail? mail = handle.get_mail(); + return ( + mail != null && + !Geary.String.is_empty(mail.imap_host) && + !Geary.String.is_empty(mail.smtp_host) + ); + } + + private async void create_goa_account(Goa.Object account, + GLib.Cancellable? cancellable) { + if (is_valid_goa_account(account)) { + Goa.Mail? mail = account.get_mail(); string? name = mail.name; if (Geary.String.is_empty_or_whitespace(name)) { name = get_account_name();