filter out messages outside the range of displayed messages
This commit is contained in:
parent
a645728624
commit
ec25ecf202
|
@ -44,7 +44,7 @@ public class ConversationView : Box, Plugins.ConversationItemCollection {
|
||||||
content_populator = new ContentProvider(stream_interactor);
|
content_populator = new ContentProvider(stream_interactor);
|
||||||
subscription_notification = new SubscriptionNotitication(stream_interactor);
|
subscription_notification = new SubscriptionNotitication(stream_interactor);
|
||||||
|
|
||||||
insert_item.connect(do_insert_item);
|
insert_item.connect(filter_insert_item);
|
||||||
remove_item.connect(do_remove_item);
|
remove_item.connect(do_remove_item);
|
||||||
|
|
||||||
Application app = GLib.Application.get_default() as Application;
|
Application app = GLib.Application.get_default() as Application;
|
||||||
|
@ -160,6 +160,16 @@ public class ConversationView : Box, Plugins.ConversationItemCollection {
|
||||||
Idle.add(() => { on_value_notify(); return false; });
|
Idle.add(() => { on_value_notify(); return false; });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void filter_insert_item(Plugins.MetaConversationItem item) {
|
||||||
|
print(@"$(meta_items.last().sort_time.compare(item.sort_time))\n");
|
||||||
|
print(@"$(meta_items.first().sort_time.compare(item.sort_time))\n");
|
||||||
|
if (at_current_content && meta_items.last().sort_time.compare(item.sort_time) < 0) {
|
||||||
|
do_insert_item(item);
|
||||||
|
} else if (meta_items.last().sort_time.compare(item.sort_time) > 0 && meta_items.first().sort_time.compare(item.sort_time) < 0) {
|
||||||
|
do_insert_item(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void do_insert_item(Plugins.MetaConversationItem item) {
|
public void do_insert_item(Plugins.MetaConversationItem item) {
|
||||||
lock (meta_items) {
|
lock (meta_items) {
|
||||||
if (!item.can_merge || !merge_back(item)) {
|
if (!item.can_merge || !merge_back(item)) {
|
||||||
|
@ -174,17 +184,19 @@ public class ConversationView : Box, Plugins.ConversationItemCollection {
|
||||||
|
|
||||||
private void do_remove_item(Plugins.MetaConversationItem item) {
|
private void do_remove_item(Plugins.MetaConversationItem item) {
|
||||||
ConversationItemSkeleton? skeleton = item_item_skeletons[item];
|
ConversationItemSkeleton? skeleton = item_item_skeletons[item];
|
||||||
if (skeleton.items.size > 1) {
|
if (skeleton != null) {
|
||||||
skeleton.remove_meta_item(item);
|
if (skeleton.items.size > 1) {
|
||||||
} else {
|
skeleton.remove_meta_item(item);
|
||||||
widgets[item].destroy();
|
} else {
|
||||||
widgets.unset(item);
|
widgets[item].destroy();
|
||||||
skeleton.destroy();
|
widgets.unset(item);
|
||||||
item_skeletons.remove(skeleton);
|
skeleton.destroy();
|
||||||
item_item_skeletons.unset(item);
|
item_skeletons.remove(skeleton);
|
||||||
|
item_item_skeletons.unset(item);
|
||||||
|
}
|
||||||
|
content_items.remove(item);
|
||||||
|
meta_items.remove(item);
|
||||||
}
|
}
|
||||||
content_items.remove(item);
|
|
||||||
meta_items.remove(item);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void add_notification(Widget widget) {
|
public void add_notification(Widget widget) {
|
||||||
|
|
Loading…
Reference in a new issue