diff --git a/changelog.d/+bf00f682.bugfix.md b/changelog.d/+bf00f682.bugfix.md new file mode 100644 index 000000000..ecc102557 --- /dev/null +++ b/changelog.d/+bf00f682.bugfix.md @@ -0,0 +1 @@ +Devices which set their presence as "offline" will no longer be considered for presence updates. Contributed by @timedout. diff --git a/src/api/client/sync/v3/mod.rs b/src/api/client/sync/v3/mod.rs index 8863ad54a..147294d07 100644 --- a/src/api/client/sync/v3/mod.rs +++ b/src/api/client/sync/v3/mod.rs @@ -34,6 +34,7 @@ }, assign, events::presence::{PresenceEvent, PresenceEventContent}, + presence::PresenceState, serde::Raw, }; use service::{ @@ -185,7 +186,7 @@ pub(crate) async fn sync_events_route( let sender_device = body.identity.expect_sender_device()?; // Presence update - if services.config.allow_local_presence { + if services.config.allow_local_presence && body.set_presence != PresenceState::Offline { services .presence .ping_presence(sender_user, &body.body.set_presence)