add heroes support to sliding sync responses
Signed-off-by: strawberry <strawberry@puppygock.gay>
This commit is contained in:
parent
1e4b1e516e
commit
ddacda9ecf
1 changed files with 18 additions and 13 deletions
|
@ -20,7 +20,7 @@ use ruma::{
|
||||||
Ephemeral, Filter, GlobalAccountData, InviteState, InvitedRoom, JoinedRoom, LeftRoom, Presence,
|
Ephemeral, Filter, GlobalAccountData, InviteState, InvitedRoom, JoinedRoom, LeftRoom, Presence,
|
||||||
RoomAccountData, RoomSummary, Rooms, State as RoomState, Timeline, ToDevice,
|
RoomAccountData, RoomSummary, Rooms, State as RoomState, Timeline, ToDevice,
|
||||||
},
|
},
|
||||||
v4::SlidingOp,
|
v4::{SlidingOp, SlidingSyncRoomHero},
|
||||||
DeviceLists, UnreadNotificationsCount,
|
DeviceLists, UnreadNotificationsCount,
|
||||||
},
|
},
|
||||||
uiaa::UiaaResponse,
|
uiaa::UiaaResponse,
|
||||||
|
@ -1466,13 +1466,10 @@ pub(crate) async fn sync_events_v4_route(
|
||||||
.rooms
|
.rooms
|
||||||
.state_accessor
|
.state_accessor
|
||||||
.get_member(room_id, &member)?
|
.get_member(room_id, &member)?
|
||||||
.map(|memberevent| {
|
.map(|memberevent| SlidingSyncRoomHero {
|
||||||
(
|
user_id: member,
|
||||||
memberevent
|
name: memberevent.displayname,
|
||||||
.displayname
|
avatar: memberevent.avatar_url,
|
||||||
.unwrap_or_else(|| member.to_string()),
|
|
||||||
memberevent.avatar_url,
|
|
||||||
)
|
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
@ -1484,18 +1481,26 @@ pub(crate) async fn sync_events_v4_route(
|
||||||
Ordering::Greater => {
|
Ordering::Greater => {
|
||||||
let firsts = heroes[1..]
|
let firsts = heroes[1..]
|
||||||
.iter()
|
.iter()
|
||||||
.map(|h| h.0.clone())
|
.map(|h| h.name.clone().unwrap_or_else(|| h.user_id.to_string()))
|
||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
.join(", ");
|
.join(", ");
|
||||||
let last = heroes[0].0.clone();
|
let last = heroes[0]
|
||||||
|
.name
|
||||||
|
.clone()
|
||||||
|
.unwrap_or_else(|| heroes[0].user_id.to_string());
|
||||||
Some(format!("{firsts} and {last}"))
|
Some(format!("{firsts} and {last}"))
|
||||||
},
|
},
|
||||||
Ordering::Equal => Some(heroes[0].0.clone()),
|
Ordering::Equal => Some(
|
||||||
|
heroes[0]
|
||||||
|
.name
|
||||||
|
.clone()
|
||||||
|
.unwrap_or_else(|| heroes[0].user_id.to_string()),
|
||||||
|
),
|
||||||
Ordering::Less => None,
|
Ordering::Less => None,
|
||||||
};
|
};
|
||||||
|
|
||||||
let heroes_avatar = if heroes.len() == 1 {
|
let heroes_avatar = if heroes.len() == 1 {
|
||||||
heroes[0].1.clone()
|
heroes[0].avatar.clone()
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
@ -1558,7 +1563,7 @@ pub(crate) async fn sync_events_v4_route(
|
||||||
),
|
),
|
||||||
num_live: None, // Count events in timeline greater than global sync counter
|
num_live: None, // Count events in timeline greater than global sync counter
|
||||||
timestamp: None,
|
timestamp: None,
|
||||||
heroes: None,
|
heroes: Some(heroes),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue