mirror of
https://github.com/youwen5/iamb.git
synced 2025-06-19 21:29:52 -07:00
Add support for previewing images in room scrollback (#108)
This commit is contained in:
parent
974775b29b
commit
221faa828d
15 changed files with 588 additions and 29 deletions
|
@ -244,16 +244,20 @@ async fn load_older_one(
|
|||
}
|
||||
}
|
||||
|
||||
async fn load_insert(
|
||||
client: &Client,
|
||||
room_id: OwnedRoomId,
|
||||
res: MessageFetchResult,
|
||||
store: AsyncProgramStore,
|
||||
) {
|
||||
async fn load_insert(room_id: OwnedRoomId, res: MessageFetchResult, store: AsyncProgramStore) {
|
||||
let mut locked = store.lock().await;
|
||||
let ChatStore { need_load, presences, rooms, .. } = &mut locked.application;
|
||||
let ChatStore {
|
||||
need_load,
|
||||
presences,
|
||||
rooms,
|
||||
worker,
|
||||
picker,
|
||||
settings,
|
||||
..
|
||||
} = &mut locked.application;
|
||||
let info = rooms.get_or_default(room_id.clone());
|
||||
info.fetching = false;
|
||||
let client = &worker.client;
|
||||
|
||||
match res {
|
||||
Ok((fetch_id, msgs)) => {
|
||||
|
@ -270,7 +274,14 @@ async fn load_insert(
|
|||
info.insert_encrypted(msg);
|
||||
},
|
||||
AnyMessageLikeEvent::RoomMessage(msg) => {
|
||||
info.insert(msg);
|
||||
info.insert_with_preview(
|
||||
room_id.clone(),
|
||||
store.clone(),
|
||||
*picker,
|
||||
msg,
|
||||
settings,
|
||||
client.media(),
|
||||
);
|
||||
},
|
||||
AnyMessageLikeEvent::Reaction(ev) => {
|
||||
info.insert_reaction(ev);
|
||||
|
@ -298,12 +309,11 @@ async fn load_older(client: &Client, store: &AsyncProgramStore) -> usize {
|
|||
.await
|
||||
.into_iter()
|
||||
.map(|(room_id, fetch_id)| {
|
||||
let client = client.clone();
|
||||
let store = store.clone();
|
||||
|
||||
async move {
|
||||
let res = load_older_one(&client, room_id.as_ref(), fetch_id, limit).await;
|
||||
load_insert(&client, room_id, res, store).await;
|
||||
let res = load_older_one(client, room_id.as_ref(), fetch_id, limit).await;
|
||||
load_insert(room_id, res, store).await;
|
||||
}
|
||||
})
|
||||
.collect::<FuturesUnordered<_>>()
|
||||
|
@ -813,9 +823,20 @@ impl ClientWorker {
|
|||
let sender = ev.sender().to_owned();
|
||||
let _ = locked.application.presences.get_or_default(sender);
|
||||
|
||||
let info = locked.application.get_room_info(room_id.to_owned());
|
||||
let ChatStore { rooms, picker, settings, .. } = &mut locked.application;
|
||||
let info = rooms.get_or_default(room_id.to_owned());
|
||||
|
||||
update_event_receipts(info, &room, ev.event_id()).await;
|
||||
info.insert(ev.into_full_event(room_id.to_owned()));
|
||||
|
||||
let full_ev = ev.into_full_event(room_id.to_owned());
|
||||
info.insert_with_preview(
|
||||
room_id.to_owned(),
|
||||
store.clone(),
|
||||
*picker,
|
||||
full_ev,
|
||||
settings,
|
||||
client.media(),
|
||||
);
|
||||
}
|
||||
},
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue