Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sdk: add support for listening to stream of live location updates #4025

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

torrybr
Copy link
Contributor

@torrybr torrybr commented Sep 22, 2024

Conversation related to this issue can be found here

This merge request adds subscribe_to_live_location_shares to the matrix_sdk::Room that allows clients to listen for beacon updates using a background task. The method provides an easy way to subscribe to live location sharing events within a room, handling event processing internally.

Follow-up tasks will include adding support for the event cache.

@torrybr torrybr requested a review from a team as a code owner September 22, 2024 15:36
@torrybr torrybr requested review from bnjbvr and removed request for a team September 22, 2024 15:36
@torrybr torrybr changed the title Add Support for listening to stream of live location updates sdk: add support for listening to stream of live location updates Sep 22, 2024
last_location: LastLocation {
location: event.content.location,
ts: event.content.ts,
},
Copy link
Contributor Author

@torrybr torrybr Sep 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm having trouble adding beacon_info to the struct with self.get_user_beacon_info() due to borrowed data issues. I'm still learning the nuances of Rust tasks.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you still have troubles?

Copy link
Contributor Author

@torrybr torrybr Sep 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I'm having trouble integrating the beacon_info into my struct, which contains information about the sender, timeout, and is_live(). I've commented out beacon_info in the struct until I can better understand how to include it.

Each user sharing their live location in a room is stored here. My idea is to, on every beacon update, retrieve the related beacon_info and send it to the receiver. This is why I updated get_user_beacon_info to obtain beacon_info based on the sender.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it the caller's responsibility to retrieve the beacon_info based on the user ID provided in the LiveLocationShare struct, or should this function handle the retrieval of beacon_info as part of the event processing?

@bnjbvr bnjbvr requested review from a team and stefanceriu and removed request for bnjbvr and a team September 23, 2024 07:49
@stefanceriu
Copy link
Member

Seems that the test aren't particularly happy with this PR. Can you please have a look?

Copy link
Member

@Hywan Hywan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR. I've left some feedback that can impact the global design of your patch.

crates/matrix-sdk/src/room/mod.rs Outdated Show resolved Hide resolved
crates/matrix-sdk/src/room/mod.rs Outdated Show resolved Hide resolved
crates/matrix-sdk/src/room/mod.rs Outdated Show resolved Hide resolved
Copy link

codecov bot commented Sep 24, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 84.16%. Comparing base (5ba9061) to head (c249ba0).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4025      +/-   ##
==========================================
+ Coverage   84.15%   84.16%   +0.01%     
==========================================
  Files         266      266              
  Lines       28461    28474      +13     
==========================================
+ Hits        23950    23964      +14     
+ Misses       4511     4510       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@torrybr torrybr requested a review from Hywan September 24, 2024 15:10
crates/matrix-sdk/src/live_location.rs Show resolved Hide resolved
crates/matrix-sdk/src/live_location.rs Outdated Show resolved Hide resolved
Comment on lines +17 to +18
// /// Information about the associated beacon event (currently commented out).
// pub beacon_info: BeaconInfoEventContent,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why did you comment these lines?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See #4025 (comment) above

///
/// # Errors
///
/// Returns an error if the event is redacted, stripped, not found or could
/// not be deserialized.
async fn get_user_beacon_info(
&self,
user_id: &UserId,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are you adding the user_id argument here? You're using the method the same way by passing Self::own_user_id() anyway. Moreover, I'm not sure it's possible to get the beacon info for another user within a client.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See #4025 (comment) above

crates/matrix-sdk/src/room/mod.rs Outdated Show resolved Hide resolved
last_location: LastLocation {
location: event.content.location,
ts: event.content.ts,
},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you still have troubles?

crates/matrix-sdk/tests/integration/room/beacon/mod.rs Outdated Show resolved Hide resolved
@stefanceriu stefanceriu removed their request for review September 24, 2024 15:17
@torrybr torrybr requested a review from Hywan September 24, 2024 17:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants