Add base_folder property back to ConversationSet
Athough it was removed a while back, add it back since it is not only needed when adding conversations, but also when removing email from conversations to be able to detect when a conversation should be dropped.
This commit is contained in:
parent
292498b00f
commit
67bf1183e6
3 changed files with 32 additions and 32 deletions
|
|
@ -101,9 +101,7 @@ public class Geary.App.ConversationMonitor : BaseObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The set of all conversations loaded by the monitor. */
|
/** The set of all conversations loaded by the monitor. */
|
||||||
internal ConversationSet conversations {
|
internal ConversationSet conversations { get; private set; }
|
||||||
get; private set; default = new ConversationSet();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** The oldest message from the base folder in the loaded window. */
|
/** The oldest message from the base folder in the loaded window. */
|
||||||
internal EmailIdentifier? window_lowest {
|
internal EmailIdentifier? window_lowest {
|
||||||
|
|
@ -263,6 +261,7 @@ public class Geary.App.ConversationMonitor : BaseObject {
|
||||||
this.open_flags = open_flags;
|
this.open_flags = open_flags;
|
||||||
this.required_fields = required_fields | REQUIRED_FIELDS;
|
this.required_fields = required_fields | REQUIRED_FIELDS;
|
||||||
this._min_window_count = min_window_count;
|
this._min_window_count = min_window_count;
|
||||||
|
this.conversations = new ConversationSet(base_folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -726,7 +725,7 @@ public class Geary.App.ConversationMonitor : BaseObject {
|
||||||
// Add them to the conversation set
|
// Add them to the conversation set
|
||||||
if (email_paths != null) {
|
if (email_paths != null) {
|
||||||
this.conversations.add_all_emails(
|
this.conversations.add_all_emails(
|
||||||
job.emails.values, email_paths, this.base_folder,
|
job.emails.values, email_paths,
|
||||||
out added, out appended, out removed_due_to_merge
|
out added, out appended, out removed_due_to_merge
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2016 Software Freedom Conservancy Inc.
|
* Copyright 2016 Software Freedom Conservancy Inc.
|
||||||
* Copyright 2017 Michael Gratton <mike@vee.net>
|
* Copyright 2017-2019 Michael Gratton <mike@vee.net>
|
||||||
*
|
*
|
||||||
* This software is licensed under the GNU Lesser General Public License
|
* This software is licensed under the GNU Lesser General Public License
|
||||||
* (version 2.1 or later). See the COPYING file in this distribution.
|
* (version 2.1 or later). See the COPYING file in this distribution.
|
||||||
|
|
@ -11,6 +11,10 @@
|
||||||
*/
|
*/
|
||||||
private class Geary.App.ConversationSet : BaseObject {
|
private class Geary.App.ConversationSet : BaseObject {
|
||||||
|
|
||||||
|
|
||||||
|
/** The base folder for this set of conversations. */
|
||||||
|
public Folder base_folder { get; private set; }
|
||||||
|
|
||||||
/** Determines the number of conversations in the set. */
|
/** Determines the number of conversations in the set. */
|
||||||
public int size { get { return _conversations.size; } }
|
public int size { get { return _conversations.size; } }
|
||||||
|
|
||||||
|
|
@ -35,6 +39,16 @@ private class Geary.App.ConversationSet : BaseObject {
|
||||||
= new Gee.HashMap<Geary.RFC822.MessageID, Conversation>();
|
= new Gee.HashMap<Geary.RFC822.MessageID, Conversation>();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new conversation set.
|
||||||
|
*
|
||||||
|
* The `base_folder` argument is the base folder for the
|
||||||
|
* conversation monitor that owns this set.
|
||||||
|
*/
|
||||||
|
public ConversationSet(Folder base_folder) {
|
||||||
|
this.base_folder = base_folder;
|
||||||
|
}
|
||||||
|
|
||||||
public int get_email_count() {
|
public int get_email_count() {
|
||||||
return email_id_map.size;
|
return email_id_map.size;
|
||||||
}
|
}
|
||||||
|
|
@ -60,8 +74,7 @@ private class Geary.App.ConversationSet : BaseObject {
|
||||||
* needed. The collection `emails` contains the messages to be
|
* needed. The collection `emails` contains the messages to be
|
||||||
* added, and for each email in the collection, there should be an
|
* added, and for each email in the collection, there should be an
|
||||||
* entry in `id_to_paths` that indicates the folders each message
|
* entry in `id_to_paths` that indicates the folders each message
|
||||||
* is known to belong to. The folder `base_folder` is the base
|
* is known to belong to.
|
||||||
* folder for the conversation monitor that owns this set.
|
|
||||||
*
|
*
|
||||||
* The three collections returned include any conversation that
|
* The three collections returned include any conversation that
|
||||||
* were created, any that had email appended to them (and the
|
* were created, any that had email appended to them (and the
|
||||||
|
|
@ -70,7 +83,6 @@ private class Geary.App.ConversationSet : BaseObject {
|
||||||
*/
|
*/
|
||||||
public void add_all_emails(Gee.Collection<Email> emails,
|
public void add_all_emails(Gee.Collection<Email> emails,
|
||||||
Gee.MultiMap<EmailIdentifier, FolderPath> id_to_paths,
|
Gee.MultiMap<EmailIdentifier, FolderPath> id_to_paths,
|
||||||
Folder base_folder,
|
|
||||||
out Gee.Collection<Conversation> added,
|
out Gee.Collection<Conversation> added,
|
||||||
out Gee.MultiMap<Conversation, Email> appended,
|
out Gee.MultiMap<Conversation, Email> appended,
|
||||||
out Gee.Collection<Conversation> removed_due_to_merge) {
|
out Gee.Collection<Conversation> removed_due_to_merge) {
|
||||||
|
|
@ -124,8 +136,7 @@ private class Geary.App.ConversationSet : BaseObject {
|
||||||
// Don't add an email with no known paths - it may
|
// Don't add an email with no known paths - it may
|
||||||
// have been removed after being listed for adding.
|
// have been removed after being listed for adding.
|
||||||
conversation = add_email(
|
conversation = add_email(
|
||||||
email, base_folder, known_paths,
|
email, known_paths, out added_conversation
|
||||||
out added_conversation
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -235,7 +246,6 @@ private class Geary.App.ConversationSet : BaseObject {
|
||||||
* was created, else it is set to `false`.
|
* was created, else it is set to `false`.
|
||||||
*/
|
*/
|
||||||
private Conversation? add_email(Geary.Email email,
|
private Conversation? add_email(Geary.Email email,
|
||||||
Folder base_folder,
|
|
||||||
Gee.Collection<FolderPath>? known_paths,
|
Gee.Collection<FolderPath>? known_paths,
|
||||||
out bool added_conversation) {
|
out bool added_conversation) {
|
||||||
added_conversation = false;
|
added_conversation = false;
|
||||||
|
|
@ -255,7 +265,7 @@ private class Geary.App.ConversationSet : BaseObject {
|
||||||
if (conversation == null) {
|
if (conversation == null) {
|
||||||
// Not in or related to any existing conversations, so
|
// Not in or related to any existing conversations, so
|
||||||
// create one
|
// create one
|
||||||
conversation = new Conversation(base_folder);
|
conversation = new Conversation(this.base_folder);
|
||||||
_conversations.add(conversation);
|
_conversations.add(conversation);
|
||||||
added_conversation = true;
|
added_conversation = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ class Geary.App.ConversationSetTest : TestCase {
|
||||||
SpecialFolderType.NONE,
|
SpecialFolderType.NONE,
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
this.test = new ConversationSet();
|
this.test = new ConversationSet(this.base_folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void tear_down() {
|
public override void tear_down() {
|
||||||
|
|
@ -62,7 +62,7 @@ class Geary.App.ConversationSetTest : TestCase {
|
||||||
Gee.Collection<Conversation>? removed = null;
|
Gee.Collection<Conversation>? removed = null;
|
||||||
|
|
||||||
this.test.add_all_emails(
|
this.test.add_all_emails(
|
||||||
emails, email_paths, this.base_folder,
|
emails, email_paths,
|
||||||
out added, out appended, out removed
|
out added, out appended, out removed
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -108,8 +108,7 @@ class Geary.App.ConversationSetTest : TestCase {
|
||||||
Gee.MultiMap<Conversation,Email>? appended = null;
|
Gee.MultiMap<Conversation,Email>? appended = null;
|
||||||
Gee.Collection<Conversation>? removed = null;
|
Gee.Collection<Conversation>? removed = null;
|
||||||
this.test.add_all_emails(
|
this.test.add_all_emails(
|
||||||
emails, email_paths, this.base_folder,
|
emails, email_paths, out added, out appended, out removed
|
||||||
out added, out appended, out removed
|
|
||||||
);
|
);
|
||||||
|
|
||||||
assert(this.test.size == 1);
|
assert(this.test.size == 1);
|
||||||
|
|
@ -127,8 +126,7 @@ class Geary.App.ConversationSetTest : TestCase {
|
||||||
appended = null;
|
appended = null;
|
||||||
removed = null;
|
removed = null;
|
||||||
this.test.add_all_emails(
|
this.test.add_all_emails(
|
||||||
emails, email_paths, this.base_folder,
|
emails, email_paths, out added, out appended, out removed
|
||||||
out added, out appended, out removed
|
|
||||||
);
|
);
|
||||||
|
|
||||||
assert(this.test.size == 1);
|
assert(this.test.size == 1);
|
||||||
|
|
@ -158,8 +156,7 @@ class Geary.App.ConversationSetTest : TestCase {
|
||||||
Gee.MultiMap<Conversation,Email>? appended = null;
|
Gee.MultiMap<Conversation,Email>? appended = null;
|
||||||
Gee.Collection<Conversation>? removed = null;
|
Gee.Collection<Conversation>? removed = null;
|
||||||
this.test.add_all_emails(
|
this.test.add_all_emails(
|
||||||
emails, email_paths, this.base_folder,
|
emails, email_paths, out added, out appended, out removed
|
||||||
out added, out appended, out removed
|
|
||||||
);
|
);
|
||||||
|
|
||||||
assert(this.test.size == 1);
|
assert(this.test.size == 1);
|
||||||
|
|
@ -188,8 +185,7 @@ class Geary.App.ConversationSetTest : TestCase {
|
||||||
appended = null;
|
appended = null;
|
||||||
removed = null;
|
removed = null;
|
||||||
this.test.add_all_emails(
|
this.test.add_all_emails(
|
||||||
emails, email_paths, this.base_folder,
|
emails, email_paths, out added, out appended, out removed
|
||||||
out added, out appended, out removed
|
|
||||||
);
|
);
|
||||||
|
|
||||||
assert(this.test.size == 1);
|
assert(this.test.size == 1);
|
||||||
|
|
@ -228,8 +224,7 @@ class Geary.App.ConversationSetTest : TestCase {
|
||||||
Gee.MultiMap<Conversation,Email>? appended = null;
|
Gee.MultiMap<Conversation,Email>? appended = null;
|
||||||
Gee.Collection<Conversation>? removed = null;
|
Gee.Collection<Conversation>? removed = null;
|
||||||
this.test.add_all_emails(
|
this.test.add_all_emails(
|
||||||
emails, email_paths, this.base_folder,
|
emails, email_paths, out added, out appended, out removed
|
||||||
out added, out appended, out removed
|
|
||||||
);
|
);
|
||||||
|
|
||||||
assert(this.test.size == 1);
|
assert(this.test.size == 1);
|
||||||
|
|
@ -278,8 +273,7 @@ class Geary.App.ConversationSetTest : TestCase {
|
||||||
Gee.MultiMap<Conversation,Email>? appended = null;
|
Gee.MultiMap<Conversation,Email>? appended = null;
|
||||||
Gee.Collection<Conversation>? removed = null;
|
Gee.Collection<Conversation>? removed = null;
|
||||||
this.test.add_all_emails(
|
this.test.add_all_emails(
|
||||||
emails, email_paths, this.base_folder,
|
emails, email_paths, out added, out appended, out removed
|
||||||
out added, out appended, out removed
|
|
||||||
);
|
);
|
||||||
|
|
||||||
assert(this.test.size == 1);
|
assert(this.test.size == 1);
|
||||||
|
|
@ -332,8 +326,7 @@ class Geary.App.ConversationSetTest : TestCase {
|
||||||
Gee.MultiMap<Conversation,Email>? appended = null;
|
Gee.MultiMap<Conversation,Email>? appended = null;
|
||||||
Gee.Collection<Conversation>? removed = null;
|
Gee.Collection<Conversation>? removed = null;
|
||||||
this.test.add_all_emails(
|
this.test.add_all_emails(
|
||||||
emails, email_paths, this.base_folder,
|
emails, email_paths, out added, out appended, out removed
|
||||||
out added, out appended, out removed
|
|
||||||
);
|
);
|
||||||
|
|
||||||
assert(this.test.size == 1);
|
assert(this.test.size == 1);
|
||||||
|
|
@ -361,8 +354,7 @@ class Geary.App.ConversationSetTest : TestCase {
|
||||||
Gee.MultiMap<Conversation,Email>? appended = null;
|
Gee.MultiMap<Conversation,Email>? appended = null;
|
||||||
Gee.Collection<Conversation>? removed = null;
|
Gee.Collection<Conversation>? removed = null;
|
||||||
this.test.add_all_emails(
|
this.test.add_all_emails(
|
||||||
emails, email_paths, this.base_folder,
|
emails, email_paths, out added, out appended, out removed
|
||||||
out added, out appended, out removed
|
|
||||||
);
|
);
|
||||||
|
|
||||||
assert(this.test.size == 1);
|
assert(this.test.size == 1);
|
||||||
|
|
@ -499,8 +491,7 @@ class Geary.App.ConversationSetTest : TestCase {
|
||||||
Gee.MultiMap<Conversation,Email>? appended = null;
|
Gee.MultiMap<Conversation,Email>? appended = null;
|
||||||
Gee.Collection<Conversation>? removed = null;
|
Gee.Collection<Conversation>? removed = null;
|
||||||
this.test.add_all_emails(
|
this.test.add_all_emails(
|
||||||
emails, email_paths, this.base_folder,
|
emails, email_paths, out added, out appended, out removed
|
||||||
out added, out appended, out removed
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue