[list] Sort notifications by latest first
This commit is contained in:
@ -174,7 +174,18 @@ impl Subscription {
|
|||||||
fn handle_event(&self, ev: ListenerEvent) {
|
fn handle_event(&self, ev: ListenerEvent) {
|
||||||
match ev {
|
match ev {
|
||||||
ListenerEvent::Message(msg) => {
|
ListenerEvent::Message(msg) => {
|
||||||
self.imp().messages.append(&glib::BoxedAnyObject::new(msg));
|
let time = msg.time;
|
||||||
|
let messages = &self.imp().messages;
|
||||||
|
let pos = (0..messages.n_items())
|
||||||
|
.find(|&i| {
|
||||||
|
messages
|
||||||
|
.item(i)
|
||||||
|
.and_then(|item| item.downcast::<glib::BoxedAnyObject>().ok())
|
||||||
|
.map(|b| b.borrow::<models::ReceivedMessage>().time > time)
|
||||||
|
.unwrap_or(false)
|
||||||
|
})
|
||||||
|
.unwrap_or(messages.n_items() as u32);
|
||||||
|
messages.insert(pos, &glib::BoxedAnyObject::new(msg));
|
||||||
self.update_unread_count();
|
self.update_unread_count();
|
||||||
}
|
}
|
||||||
ListenerEvent::ConnectionStateChanged(connection_state) => {
|
ListenerEvent::ConnectionStateChanged(connection_state) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user