use std::ops::Range;
use ruma::{
events::{AnySyncStateEvent, room::member::MembershipState},
serde::Raw,
};
use serde_json::{from_value as from_json_value, json};
pub fn bulk_room_members<'a>(
batch: usize,
range: Range<usize>,
server: &'a str,
membership: &'a MembershipState,
) -> impl Iterator<Item = Raw<AnySyncStateEvent>> + 'a {
range.map(move |idx| {
let user_id = format!("@user_{idx}:{server}");
let event_id = format!("$roommember_{batch}_{idx}");
let ts = 151800000 + batch * 100 + idx;
from_json_value(json!({
"content": {
"membership": membership,
},
"event_id": event_id,
"origin_server_ts": ts,
"sender": user_id,
"state_key": user_id,
"type": "m.room.member",
}))
.unwrap()
})
}