From ca7cc04ab21097adaf45d1798cfd1233a7779863 Mon Sep 17 00:00:00 2001 From: Michael Gratton Date: Sun, 29 Dec 2019 17:03:39 +1030 Subject: [PATCH] Remove Geary.Imap.ClientSession lifecyle signals They aren't being used, and clients should use lifecycle methods to determine these events anyway. --- .../imap/transport/imap-client-session.vala | 60 +++++++------------ 1 file changed, 21 insertions(+), 39 deletions(-) diff --git a/src/engine/imap/transport/imap-client-session.vala b/src/engine/imap/transport/imap-client-session.vala index d8150866..3e95fc5b 100644 --- a/src/engine/imap/transport/imap-client-session.vala +++ b/src/engine/imap/transport/imap-client-session.vala @@ -302,18 +302,10 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { // Connection state changes // - public signal void connected(); - - public signal void session_denied(string? reason); - - public signal void authorized(); - - public signal void logged_out(); - - public signal void login_failed(StatusResponse? response); - + /** Emitted when the session is disconnected for any reason. */ public signal void disconnected(DisconnectReason reason); + /** Emitted when an IMAP command status response is received. */ public signal void status_response_received(StatusResponse status_response); /** @@ -658,17 +650,14 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { /** * Connect to the server. * - * This performs no transaction or session initiation with the server. See {@link login_async} - * and {@link initiate_session_async} for next steps. + * This performs no transaction or session initiation with the + * server. See {@link login_async} and {@link + * initiate_session_async} for next steps. * - * The signals {@link connected} or {@link session_denied} will be fired in the context of this - * call, depending on the results of the connection greeting from the server. However, - * command should only be transmitted (login, initiate session, etc.) after this call has - * completed. - * - * If the connection fails (if this call throws an Error) the ClientSession will be disconnected, - * even if the error was from the server (that is, not a network problem). The - * {@link ClientSession} should be discarded. + * If the connection fails (if this call throws an Error) the + * ClientSession will be disconnected, even if the error was from + * the server (that is, not a network problem). The {@link + * ClientSession} should be discarded. */ public async void connect_async(GLib.Cancellable? cancellable) throws GLib.Error { @@ -687,9 +676,9 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { // connect and let ClientConnection's signals drive the show try { yield cx.connect_async(cancellable); - } catch (Error err) { + fsm.issue(Event.CONNECTED); + } catch (GLib.Error err) { fsm.issue(Event.SEND_ERROR, null, null, err); - throw err; } @@ -1090,19 +1079,12 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { if (!validate_state_change_cmd(completion_response)) return state; - // Remember: only you can prevent firing signals inside state transition handlers - switch (completion_response.status) { - case Status.OK: - fsm.do_post_transition(() => { authorized(); }); - - return State.AUTHORIZED; - - default: - debug("LOGIN failed: %s", completion_response.to_string()); - fsm.do_post_transition((resp) => { login_failed((StatusResponse)resp); }, completion_response); - - return State.NOAUTH; + uint new_state = State.AUTHORIZED; + if (completion_response.status != OK) { + debug("LOGIN failed: %s", completion_response.to_string()); + new_state = State.NOAUTH; } + return new_state; } // @@ -1523,7 +1505,6 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { if (params.proceed) { yield command_transaction_async(cmd, cancellable); - logged_out(); yield do_disconnect(DisconnectReason.LOCAL_CLOSE); } } @@ -1569,10 +1550,11 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { private uint on_logging_out_recv_completion(uint state, uint event, void *user, Object? object) { StatusResponse completion_response = (StatusResponse) object; - if (!validate_state_change_cmd(completion_response)) - return state; - - return State.CLOSED; + uint new_state = state; + if (validate_state_change_cmd(completion_response)) { + new_state = State.CLOSED; + } + return new_state; } //