mirror of
https://forgejo.ellis.link/continuwuation/continuwuity/
synced 2026-10-22 23:41:27 +00:00
fix: Don't bail out when changing profile data if membership cache is wrong
This commit is contained in:
1 file changed
+23
-8
@@ -4,6 +4,7 @@
|
||||
Err, Result,
|
||||
pdu::PartialPdu,
|
||||
utils::{ReadyExt, stream::TryIgnore, to_canonical_object},
|
||||
warn,
|
||||
};
|
||||
use database::{Deserialized, Ignore, Interfix, Json};
|
||||
use futures::{Stream, StreamExt};
|
||||
@@ -115,18 +116,32 @@ pub async fn set_profile_field(
|
||||
|
||||
while let Some(room_id) = all_joined_rooms.next().await {
|
||||
// TODO: this clobbers any custom fields on the event content
|
||||
let mut current_membership = self
|
||||
let mut current_membership = match self
|
||||
.services
|
||||
.state_accessor
|
||||
.get_member(&room_id, user_id)
|
||||
.await
|
||||
.expect("should be able to fetch membership event for joined room");
|
||||
|
||||
assert_eq!(
|
||||
current_membership.membership,
|
||||
MembershipState::Join,
|
||||
"user should be joined"
|
||||
);
|
||||
{
|
||||
| Ok(current_membership)
|
||||
if current_membership.membership == MembershipState::Join =>
|
||||
current_membership,
|
||||
| Ok(current_membership) => {
|
||||
warn!(
|
||||
?user_id,
|
||||
?room_id,
|
||||
"User is not joined in joined room: {current_membership:?}"
|
||||
);
|
||||
continue;
|
||||
},
|
||||
| Err(err) => {
|
||||
warn!(
|
||||
?user_id,
|
||||
?room_id,
|
||||
"Could not load membership event for joined room: {err}"
|
||||
);
|
||||
continue;
|
||||
},
|
||||
};
|
||||
|
||||
// If `propagate_to` is `unchanged`, and the current value of the field we're
|
||||
// updating was changed from its global value in this room, skip it.
|
||||
|
||||
Reference in new issue
Block a user