Skip to content

Commit 8af1b7a

Browse files
committed
Take the localpart instead of the MXID in HomeserverConnection methods
1 parent a0cd546 commit 8af1b7a

File tree

17 files changed

+251
-206
lines changed

17 files changed

+251
-206
lines changed

crates/handlers/src/admin/v1/users/add.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,10 +166,7 @@ pub async fn handler(
166166
let user = repo.user().add(&mut rng, &clock, params.username).await?;
167167

168168
homeserver
169-
.provision_user(&ProvisionRequest::new(
170-
homeserver.mxid(&user.username),
171-
&user.sub,
172-
))
169+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
173170
.await
174171
.map_err(RouteError::Homeserver)?;
175172

@@ -222,8 +219,7 @@ mod tests {
222219
assert_eq!(user.username, "alice");
223220

224221
// Check that the user was created on the homeserver
225-
let mxid = state.homeserver_connection.mxid("alice");
226-
let result = state.homeserver_connection.query_user(&mxid).await;
222+
let result = state.homeserver_connection.query_user("alice").await;
227223
assert!(result.is_ok());
228224
}
229225

crates/handlers/src/admin/v1/users/reactivate.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,8 @@ pub async fn handler(
8383
.ok_or(RouteError::NotFound(id))?;
8484

8585
// Call the homeserver synchronously to reactivate the user
86-
let mxid = homeserver.mxid(&user.username);
8786
homeserver
88-
.reactivate_user(&mxid)
87+
.reactivate_user(&user.username)
8988
.await
9089
.map_err(RouteError::Homeserver)?;
9190

@@ -127,20 +126,23 @@ mod tests {
127126

128127
// Provision and immediately deactivate the user on the homeserver,
129128
// because this endpoint will try to reactivate it
130-
let mxid = state.homeserver_connection.mxid(&user.username);
131129
state
132130
.homeserver_connection
133-
.provision_user(&ProvisionRequest::new(&mxid, &user.sub))
131+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
134132
.await
135133
.unwrap();
136134
state
137135
.homeserver_connection
138-
.delete_user(&mxid, true)
136+
.delete_user(&user.username, true)
139137
.await
140138
.unwrap();
141139

142140
// The user should be deactivated on the homeserver
143-
let mx_user = state.homeserver_connection.query_user(&mxid).await.unwrap();
141+
let mx_user = state
142+
.homeserver_connection
143+
.query_user(&user.username)
144+
.await
145+
.unwrap();
144146
assert!(mx_user.deactivated);
145147

146148
let request = Request::post(format!("/api/admin/v1/users/{}/reactivate", user.id))
@@ -176,10 +178,9 @@ mod tests {
176178
repo.save().await.unwrap();
177179

178180
// Provision the user on the homeserver
179-
let mxid = state.homeserver_connection.mxid(&user.username);
180181
state
181182
.homeserver_connection
182-
.provision_user(&ProvisionRequest::new(&mxid, &user.sub))
183+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
183184
.await
184185
.unwrap();
185186

crates/handlers/src/admin/v1/users/unlock.rs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,9 @@ mod tests {
112112

113113
// Also provision the user on the homeserver, because this endpoint will try to
114114
// reactivate it
115-
let mxid = state.homeserver_connection.mxid(&user.username);
116115
state
117116
.homeserver_connection
118-
.provision_user(&ProvisionRequest::new(&mxid, &user.sub))
117+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
119118
.await
120119
.unwrap();
121120

@@ -149,21 +148,24 @@ mod tests {
149148
repo.save().await.unwrap();
150149

151150
// Provision the user on the homeserver
152-
let mxid = state.homeserver_connection.mxid(&user.username);
153151
state
154152
.homeserver_connection
155-
.provision_user(&ProvisionRequest::new(&mxid, &user.sub))
153+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
156154
.await
157155
.unwrap();
158156
// but then deactivate it
159157
state
160158
.homeserver_connection
161-
.delete_user(&mxid, true)
159+
.delete_user(&user.username, true)
162160
.await
163161
.unwrap();
164162

165163
// The user should be deactivated on the homeserver
166-
let mx_user = state.homeserver_connection.query_user(&mxid).await.unwrap();
164+
let mx_user = state
165+
.homeserver_connection
166+
.query_user(&user.username)
167+
.await
168+
.unwrap();
167169
assert!(mx_user.deactivated);
168170

169171
let request = Request::post(format!("/api/admin/v1/users/{}/unlock", user.id))
@@ -182,7 +184,11 @@ mod tests {
182184
body["data"]["attributes"]["deactivated_at"],
183185
serde_json::json!(state.clock.now())
184186
);
185-
let mx_user = state.homeserver_connection.query_user(&mxid).await.unwrap();
187+
let mx_user = state
188+
.homeserver_connection
189+
.query_user(&user.username)
190+
.await
191+
.unwrap();
186192
assert!(mx_user.deactivated);
187193
}
188194

crates/handlers/src/compat/login.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,11 @@ pub(crate) async fn post(
411411
// Now we can create the device on the homeserver, without holding the
412412
// transaction
413413
if let Err(err) = homeserver
414-
.create_device(&user_id, device.as_str(), session.human_name.as_deref())
414+
.create_device(
415+
&user.username,
416+
device.as_str(),
417+
session.human_name.as_deref(),
418+
)
415419
.await
416420
{
417421
// Something went wrong, let's end this session and schedule a device sync
@@ -829,10 +833,9 @@ mod tests {
829833
.add(&mut rng, &state.clock, &user, version, hash, None)
830834
.await
831835
.unwrap();
832-
let mxid = state.homeserver_connection.mxid(&user.username);
833836
state
834837
.homeserver_connection
835-
.provision_user(&ProvisionRequest::new(mxid, &user.sub))
838+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
836839
.await
837840
.unwrap();
838841

@@ -1133,10 +1136,9 @@ mod tests {
11331136
.await
11341137
.unwrap();
11351138

1136-
let mxid = state.homeserver_connection.mxid(&user.username);
11371139
state
11381140
.homeserver_connection
1139-
.provision_user(&ProvisionRequest::new(mxid, &user.sub))
1141+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
11401142
.await
11411143
.unwrap();
11421144

@@ -1239,10 +1241,9 @@ mod tests {
12391241
let user = repo.user().lock(&state.clock, user).await.unwrap();
12401242
repo.save().await.unwrap();
12411243

1242-
let mxid = state.homeserver_connection.mxid(&user.username);
12431244
state
12441245
.homeserver_connection
1245-
.provision_user(&ProvisionRequest::new(mxid, &user.sub))
1246+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
12461247
.await
12471248
.unwrap();
12481249

crates/handlers/src/graphql/model/matrix.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ impl MatrixUser {
2727
conn: &C,
2828
user: &str,
2929
) -> Result<MatrixUser, anyhow::Error> {
30-
let mxid = conn.mxid(user);
30+
let info = conn.query_user(user).await?;
3131

32-
let info = conn.query_user(&mxid).await?;
32+
let mxid = conn.mxid(user);
3333

3434
Ok(MatrixUser {
3535
mxid,

crates/handlers/src/graphql/mutations/compat_session.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,10 +187,9 @@ impl CompatSessionMutations {
187187
.await?;
188188

189189
// Update the device on the homeserver side
190-
let mxid = homeserver.mxid(&user.username);
191190
if let Some(device) = session.device.as_ref() {
192191
homeserver
193-
.update_device_display_name(&mxid, device.as_str(), &input.human_name)
192+
.update_device_display_name(&user.username, device.as_str(), &input.human_name)
194193
.await
195194
.context("Failed to provision device")?;
196195
}

crates/handlers/src/graphql/mutations/matrix.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ impl MatrixMutations {
9393
repo.cancel().await?;
9494

9595
let conn = state.homeserver_connection();
96-
let mxid = conn.mxid(&user.username);
9796

9897
if let Some(display_name) = &input.display_name {
9998
// Let's do some basic validation on the display name
@@ -105,11 +104,11 @@ impl MatrixMutations {
105104
return Ok(SetDisplayNamePayload::Invalid);
106105
}
107106

108-
conn.set_displayname(&mxid, display_name)
107+
conn.set_displayname(&user.username, display_name)
109108
.await
110109
.context("Failed to set display name")?;
111110
} else {
112-
conn.unset_displayname(&mxid)
111+
conn.unset_displayname(&user.username)
113112
.await
114113
.context("Failed to unset display name")?;
115114
}

crates/handlers/src/graphql/mutations/oauth2_session.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,11 +212,10 @@ impl OAuth2SessionMutations {
212212
repo.user().acquire_lock_for_sync(&user).await?;
213213

214214
// Look for devices to provision
215-
let mxid = homeserver.mxid(&user.username);
216215
for scope in &*session.scope {
217216
if let Some(device) = Device::from_scope_token(scope) {
218217
homeserver
219-
.create_device(&mxid, device.as_str(), None)
218+
.create_device(&user.username, device.as_str(), None)
220219
.await
221220
.context("Failed to provision device")?;
222221
}
@@ -331,11 +330,10 @@ impl OAuth2SessionMutations {
331330
.await?;
332331

333332
// Update the device on the homeserver side
334-
let mxid = homeserver.mxid(&user.username);
335333
for scope in &*session.scope {
336334
if let Some(device) = Device::from_scope_token(scope) {
337335
homeserver
338-
.update_device_display_name(&mxid, device.as_str(), &input.human_name)
336+
.update_device_display_name(&user.username, device.as_str(), &input.human_name)
339337
.await
340338
.context("Failed to provision device")?;
341339
}

crates/handlers/src/graphql/mutations/user.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -586,8 +586,7 @@ impl UserMutations {
586586
};
587587

588588
// Call the homeserver synchronously to reactivate the user
589-
let mxid = matrix.mxid(&user.username);
590-
matrix.reactivate_user(&mxid).await?;
589+
matrix.reactivate_user(&user.username).await?;
591590

592591
// Now reactivate & unlock the user in our database
593592
let user = repo.user().reactivate(user).await?;
@@ -654,9 +653,7 @@ impl UserMutations {
654653
};
655654

656655
let conn = state.homeserver_connection();
657-
let mxid = conn.mxid(&user.username);
658-
659-
conn.allow_cross_signing_reset(&mxid)
656+
conn.allow_cross_signing_reset(&user.username)
660657
.await
661658
.context("Failed to allow cross-signing reset")?;
662659

crates/handlers/src/graphql/tests.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -529,10 +529,9 @@ async fn test_oauth2_client_credentials(pool: PgPool) {
529529
// XXX: we don't run the task worker here, so even though the addUser mutation
530530
// should have scheduled a job to provision the user, it won't run in the test,
531531
// so we need to do it manually
532-
let mxid = state.homeserver_connection.mxid("alice");
533532
state
534533
.homeserver_connection
535-
.provision_user(&ProvisionRequest::new(mxid, user_id))
534+
.provision_user(&ProvisionRequest::new("alice", user_id))
536535
.await
537536
.unwrap();
538537

0 commit comments

Comments
 (0)