Add update for device last_seen_ts. (closes #40)

Piggyback on presence ping for controlled device seen updates.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-11-01 21:37:13 +00:00
parent 240b498489
commit 8b1de3d8db
8 changed files with 82 additions and 19 deletions

View File

@@ -49,7 +49,7 @@ pub(crate) async fn set_displayname_route(
// Presence update
services
.presence
.maybe_ping_presence(&body.user_id, &PresenceState::Online)
.maybe_ping_presence(&body.user_id, body.sender_device.as_deref(), &PresenceState::Online)
.await?;
Ok(set_display_name::v3::Response {})
@@ -149,7 +149,7 @@ pub(crate) async fn set_avatar_url_route(
// Presence update
services
.presence
.maybe_ping_presence(&body.user_id, &PresenceState::Online)
.maybe_ping_presence(&body.user_id, body.sender_device.as_deref(), &PresenceState::Online)
.await
.ok();

View File

@@ -93,7 +93,11 @@ pub(crate) async fn set_read_marker_route(
services
.presence
.maybe_ping_presence(sender_user, &ruma::presence::PresenceState::Online)
.maybe_ping_presence(
sender_user,
body.sender_device.as_deref(),
&ruma::presence::PresenceState::Online,
)
.await
.ok();
}
@@ -165,7 +169,11 @@ pub(crate) async fn create_receipt_route(
services
.presence
.maybe_ping_presence(sender_user, &ruma::presence::PresenceState::Online)
.maybe_ping_presence(
sender_user,
body.sender_device.as_deref(),
&ruma::presence::PresenceState::Online,
)
.await
.ok();
},

View File

@@ -130,7 +130,7 @@ pub(crate) async fn sync_events_route(
let ping_presence = services
.presence
.maybe_ping_presence(sender_user, &body.body.set_presence)
.maybe_ping_presence(sender_user, Some(sender_device), &body.body.set_presence)
.inspect_err(inspect_log)
.ok();

View File

@@ -108,7 +108,7 @@ pub(crate) async fn sync_events_v5_route(
let conn = conn_val.lock();
let ping_presence = services
.presence
.maybe_ping_presence(sender_user, &request.set_presence)
.maybe_ping_presence(sender_user, Some(sender_device), &request.set_presence)
.inspect_err(inspect_log)
.ok();

View File

@@ -66,7 +66,11 @@ pub(crate) async fn create_typing_event_route(
// ping presence
services
.presence
.maybe_ping_presence(&body.user_id, &ruma::presence::PresenceState::Online)
.maybe_ping_presence(
&body.user_id,
body.sender_device.as_deref(),
&ruma::presence::PresenceState::Online,
)
.await?;
Ok(create_typing_event::v3::Response {})

View File

@@ -76,7 +76,7 @@ pub(crate) async fn delete_timezone_key_route(
// Presence update
services
.presence
.maybe_ping_presence(&body.user_id, &PresenceState::Online)
.maybe_ping_presence(&body.user_id, body.sender_device.as_deref(), &PresenceState::Online)
.await?;
Ok(delete_timezone_key::unstable::Response {})
@@ -104,7 +104,7 @@ pub(crate) async fn set_timezone_key_route(
// Presence update
services
.presence
.maybe_ping_presence(&body.user_id, &PresenceState::Online)
.maybe_ping_presence(&body.user_id, body.sender_device.as_deref(), &PresenceState::Online)
.await?;
Ok(set_timezone_key::unstable::Response {})
@@ -170,7 +170,7 @@ pub(crate) async fn set_profile_field_route(
// Presence update
services
.presence
.maybe_ping_presence(&body.user_id, &PresenceState::Online)
.maybe_ping_presence(&body.user_id, body.sender_device.as_deref(), &PresenceState::Online)
.await?;
Ok(set_profile_field::v3::Response {})
@@ -224,7 +224,7 @@ pub(crate) async fn delete_profile_field_route(
// Presence update
services
.presence
.maybe_ping_presence(&body.user_id, &PresenceState::Online)
.maybe_ping_presence(&body.user_id, body.sender_device.as_deref(), &PresenceState::Online)
.await?;
Ok(delete_profile_field::v3::Response {})