Remove Geary.Imap.ClientSession::server-data-received signal

This was only being used internally, and it leaks low level details out
of the mid-level abstraction.
This commit is contained in:
Michael Gratton 2019-12-30 09:55:54 +10:30 committed by Michael James Gratton
parent 7ac72379bb
commit 9e01d8dca0
2 changed files with 18 additions and 18 deletions

View file

@ -312,12 +312,6 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source {
/** Emitted when an IMAP command status response is received. */
public signal void status_response_received(StatusResponse status_response);
/**
* Fired after the specific {@link ServerData} signals (i.e. {@link capability}, {@link exists}
* {@link expunge}, etc.)
*/
public signal void server_data_received(ServerData server_data);
public signal void exists(int count);
public signal void expunge(SequenceNumber seq_num);
@ -1034,16 +1028,19 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source {
yield send_command_async(new CapabilityCommand(), cancellable);
}
Gee.List<ServerData> server_data = new Gee.ArrayList<ServerData>();
ulong data_id = this.server_data_received.connect((data) => { server_data.add(data); });
var list_results = new Gee.ArrayList<MailboxInformation>();
ulong list_id = this.list.connect(
(mailbox) => { list_results.add(mailbox); }
);
try {
// Determine what this connection calls the inbox
Imap.StatusResponse response = yield send_command_async(
new ListCommand(MailboxSpecifier.inbox, false, null),
cancellable
);
if (response.status == Status.OK && !server_data.is_empty) {
this.inbox = server_data[0].get_list();
if (response.status == Status.OK && !list_results.is_empty) {
this.inbox = list_results[0];
list_results.clear();
debug("Using INBOX: %s", this.inbox.to_string());
} else {
throw new ImapError.INVALID("Unable to find INBOX");
@ -1059,7 +1056,6 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source {
warning("NAMESPACE command failed");
}
}
server_data.clear();
if (!this.personal_namespaces.is_empty) {
debug(
"Default personal namespace: %s",
@ -1083,8 +1079,8 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source {
new ListCommand(new MailboxSpecifier(prefix), false, null),
cancellable
);
if (response.status == Status.OK && !server_data.is_empty) {
MailboxInformation list = server_data[0].get_list();
if (response.status == Status.OK && !list_results.is_empty) {
MailboxInformation list = list_results[0];
delim = list.delim;
} else {
throw new ImapError.INVALID("Unable to determine personal namespace delimiter");
@ -1096,7 +1092,7 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source {
this.personal_namespaces[0].to_string());
}
} finally {
disconnect(data_id);
disconnect(list_id);
}
}
@ -1939,8 +1935,6 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source {
server_data.to_string());
break;
}
server_data_received(server_data);
}
private void clear_namespaces() {

View file

@ -256,7 +256,7 @@ class Geary.Imap.ClientSessionTest : TestCase {
this.server.add_script_line(SEND_LINE, "* CAPABILITY IMAP4rev1");
this.server.add_script_line(SEND_LINE, "a003 OK thanks");
this.server.add_script_line(RECEIVE_LINE, "a004 LIST \"\" INBOX");
this.server.add_script_line(SEND_LINE, "* LIST (\\HasChildren) \".\" INBOX");
this.server.add_script_line(SEND_LINE, "* LIST (\\HasChildren) \".\" Inbox");
this.server.add_script_line(SEND_LINE, "a004 OK there");
this.server.add_script_line(WAIT_FOR_DISCONNECT, "");
@ -280,6 +280,9 @@ class Geary.Imap.ClientSessionTest : TestCase {
assert_false(test_article.capabilities.has_capability("AUTH"));
assert_int(2, test_article.capabilities.revision);
assert_string("Inbox", test_article.inbox.mailbox.name);
assert_true(test_article.inbox.mailbox.is_inbox);
test_article.disconnect_async.begin(null, this.async_complete_full);
test_article.disconnect_async.end(async_result());
@ -297,7 +300,7 @@ class Geary.Imap.ClientSessionTest : TestCase {
this.server.add_script_line(RECEIVE_LINE, "a001 login test password");
this.server.add_script_line(SEND_LINE, "a001 OK [CAPABILITY IMAP4rev1] ohhai");
this.server.add_script_line(RECEIVE_LINE, "a002 LIST \"\" INBOX");
this.server.add_script_line(SEND_LINE, "* LIST (\\HasChildren) \".\" INBOX");
this.server.add_script_line(SEND_LINE, "* LIST (\\HasChildren) \".\" Inbox");
this.server.add_script_line(SEND_LINE, "a002 OK there");
this.server.add_script_line(WAIT_FOR_DISCONNECT, "");
@ -321,6 +324,9 @@ class Geary.Imap.ClientSessionTest : TestCase {
assert_false(test_article.capabilities.has_capability("AUTH"));
assert_int(2, test_article.capabilities.revision);
assert_string("Inbox", test_article.inbox.mailbox.name);
assert_true(test_article.inbox.mailbox.is_inbox);
test_article.disconnect_async.begin(null, this.async_complete_full);
test_article.disconnect_async.end(async_result());