Skip to content

Commit 9f370b9

Browse files
committed
Sync devices from personal sessions
1 parent 5d95c11 commit 9f370b9

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

crates/tasks/src/matrix.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ use mas_storage::{
1414
Pagination, RepositoryAccess,
1515
compat::CompatSessionFilter,
1616
oauth2::OAuth2SessionFilter,
17+
personal::PersonalSessionFilter,
1718
queue::{
1819
DeleteDeviceJob, ProvisionDeviceJob, ProvisionUserJob, QueueJobRepositoryExt as _,
1920
SyncDevicesJob,
@@ -242,6 +243,35 @@ impl RunnableJob for SyncDevicesJob {
242243
}
243244
}
244245

246+
// Cycle through all the personal sessions of the user and get the devices
247+
let mut cursor = Pagination::first(5000);
248+
loop {
249+
let page = repo
250+
.personal_session()
251+
.list(
252+
PersonalSessionFilter::new()
253+
.for_actor_user(&user)
254+
.active_only(),
255+
cursor,
256+
)
257+
.await
258+
.map_err(JobError::retry)?;
259+
260+
for personal_session in page.edges {
261+
for scope in &*personal_session.scope {
262+
if let Some(device) = Device::from_scope_token(scope) {
263+
devices.insert(device.as_str().to_owned());
264+
}
265+
}
266+
267+
cursor = cursor.after(personal_session.id);
268+
}
269+
270+
if !page.has_next_page {
271+
break;
272+
}
273+
}
274+
245275
matrix
246276
.sync_devices(&user.username, devices)
247277
.await

0 commit comments

Comments
 (0)