Skip to content

Commit 28c4b06

Browse files
committed
Fix remaining errors
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
1 parent 2365f2d commit 28c4b06

111 files changed

Lines changed: 435 additions & 538 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

benchmarks/benches/crypto_bench.rs

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::{ops::Deref, sync::Arc};
1+
use std::sync::Arc;
22

33
use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main};
44
use matrix_sdk_crypto::{EncryptionSettings, OlmMachine};
@@ -199,11 +199,7 @@ pub fn room_key_sharing(c: &mut Criterion) {
199199
group.bench_function(BenchmarkId::new("Room key sharing [memory]", &name), |b| {
200200
b.to_async(&runtime).iter(|| async {
201201
let requests = machine
202-
.share_room_key(
203-
room_id,
204-
users.iter().map(Deref::deref),
205-
EncryptionSettings::default(),
206-
)
202+
.share_room_key(room_id, users.iter(), EncryptionSettings::default())
207203
.await
208204
.unwrap();
209205

@@ -231,11 +227,7 @@ pub fn room_key_sharing(c: &mut Criterion) {
231227
group.bench_function(BenchmarkId::new("Room key sharing [SQLite]", &name), |b| {
232228
b.to_async(&runtime).iter(|| async {
233229
let requests = machine
234-
.share_room_key(
235-
room_id,
236-
users.iter().map(Deref::deref),
237-
EncryptionSettings::default(),
238-
)
230+
.share_room_key(room_id, users.iter(), EncryptionSettings::default())
239231
.await
240232
.unwrap();
241233

@@ -278,7 +270,7 @@ pub fn devices_missing_sessions_collecting(c: &mut Criterion) {
278270

279271
group.bench_function(BenchmarkId::new("Devices collecting [memory]", &name), |b| {
280272
b.to_async(&runtime).iter_with_large_drop(|| async {
281-
machine.get_missing_sessions(users.iter().map(Deref::deref)).await.unwrap()
273+
machine.get_missing_sessions(users.iter()).await.unwrap()
282274
})
283275
});
284276

@@ -294,9 +286,8 @@ pub fn devices_missing_sessions_collecting(c: &mut Criterion) {
294286
runtime.block_on(machine.mark_request_as_sent(&txn_id, &response)).unwrap();
295287

296288
group.bench_function(BenchmarkId::new("Devices collecting [SQLite]", &name), |b| {
297-
b.to_async(&runtime).iter(|| async {
298-
machine.get_missing_sessions(users.iter().map(Deref::deref)).await.unwrap()
299-
})
289+
b.to_async(&runtime)
290+
.iter(|| async { machine.get_missing_sessions(users.iter()).await.unwrap() })
300291
});
301292

302293
{

benchmarks/benches/event_cache.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ fn find_event_relations(c: &mut Criterion) {
324324
.await
325325
.unwrap()
326326
.unwrap();
327-
assert_eq!(target.event_id().as_deref().unwrap(), target_event_id);
327+
assert_eq!(target.event_id().unwrap(), target_event_id);
328328
assert_eq!(relations.len(), num_related_events as usize);
329329
},
330330
criterion::BatchSize::PerIteration,

bindings/matrix-sdk-crypto-ffi/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ async fn migrate_data(
285285
.map(|k| BackupDecryptionKey::from_base58(k.as_str()))
286286
.transpose()?;
287287

288-
let cross_signing = PrivateCrossSigningIdentity::empty((*user_id).into());
288+
let cross_signing = PrivateCrossSigningIdentity::empty(&user_id);
289289
cross_signing
290290
.import_secrets_unchecked(
291291
data.cross_signing.master_key.as_deref(),
@@ -307,7 +307,7 @@ async fn migrate_data(
307307
.filter_map(|s| parse_user_id(&s).ok().map(|u| (u, true)))
308308
.collect();
309309

310-
let tracked_users: Vec<_> = tracked_users.iter().map(|(u, d)| (&**u, *d)).collect();
310+
let tracked_users: Vec<_> = tracked_users.iter().map(|(u, d)| (u, *d)).collect();
311311
store.save_tracked_users(tracked_users.as_slice()).await?;
312312

313313
processed_steps += 1;

bindings/matrix-sdk-crypto-ffi/src/machine.rs

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use std::{
22
collections::{BTreeMap, HashMap},
33
io::Cursor,
44
mem::ManuallyDrop,
5-
ops::Deref,
65
sync::Arc,
76
time::Duration,
87
};
@@ -205,7 +204,7 @@ impl OlmMachine {
205204
mut passphrase: Option<String>,
206205
) -> Result<Arc<Self>, CryptoStoreError> {
207206
let user_id = parse_user_id(&user_id)?;
208-
let device_id = device_id.as_str().into();
207+
let device_id = device_id.into();
209208
let runtime = Runtime::new().expect("Couldn't create a tokio runtime");
210209

211210
let store = runtime
@@ -215,7 +214,7 @@ impl OlmMachine {
215214

216215
let inner = runtime.block_on(InnerMachine::with_store(
217216
&user_id,
218-
device_id,
217+
&device_id,
219218
Arc::new(store),
220219
None,
221220
))?;
@@ -353,7 +352,7 @@ impl OlmMachine {
353352

354353
Ok(self
355354
.runtime
356-
.block_on(self.inner.get_device(&user_id, device_id.as_str().into(), timeout))?
355+
.block_on(self.inner.get_device(&user_id, &device_id.into(), timeout))?
357356
.map(|d| d.into()))
358357
}
359358

@@ -378,7 +377,7 @@ impl OlmMachine {
378377
let user_id = UserId::parse(user_id)?;
379378
let device = self.runtime.block_on(self.inner.get_device(
380379
&user_id,
381-
device_id.as_str().into(),
380+
&device_id.clone().into(),
382381
None,
383382
))?;
384383

@@ -399,11 +398,8 @@ impl OlmMachine {
399398
) -> Result<(), CryptoStoreError> {
400399
let user_id = parse_user_id(&user_id)?;
401400

402-
let device = self.runtime.block_on(self.inner.get_device(
403-
&user_id,
404-
device_id.as_str().into(),
405-
None,
406-
))?;
401+
let device =
402+
self.runtime.block_on(self.inner.get_device(&user_id, &device_id.into(), None))?;
407403

408404
if let Some(device) = device {
409405
self.runtime.block_on(device.set_local_trust(trust_state))?;
@@ -587,7 +583,7 @@ impl OlmMachine {
587583
pub fn update_tracked_users(&self, users: Vec<String>) -> Result<(), CryptoStoreError> {
588584
let users: Vec<UserId> = users.into_iter().filter_map(|u| UserId::parse(u).ok()).collect();
589585

590-
self.runtime.block_on(self.inner.update_tracked_users(users.iter().map(Deref::deref)))?;
586+
self.runtime.block_on(self.inner.update_tracked_users(users.iter()))?;
591587

592588
Ok(())
593589
}
@@ -621,10 +617,7 @@ impl OlmMachine {
621617
) -> Result<Option<Request>, CryptoStoreError> {
622618
let users: Vec<UserId> = users.into_iter().filter_map(|u| UserId::parse(u).ok()).collect();
623619

624-
Ok(self
625-
.runtime
626-
.block_on(self.inner.get_missing_sessions(users.iter().map(Deref::deref)))?
627-
.map(|r| r.into()))
620+
Ok(self.runtime.block_on(self.inner.get_missing_sessions(users.iter()))?.map(|r| r.into()))
628621
}
629622

630623
/// Get the stored room settings, such as the encryption algorithm or
@@ -750,11 +743,8 @@ impl OlmMachine {
750743
let users: Vec<UserId> = users.into_iter().filter_map(|u| UserId::parse(u).ok()).collect();
751744

752745
let room_id = RoomId::parse(room_id)?;
753-
let requests = self.runtime.block_on(self.inner.share_room_key(
754-
&room_id,
755-
users.iter().map(Deref::deref),
756-
settings,
757-
))?;
746+
let requests =
747+
self.runtime.block_on(self.inner.share_room_key(&room_id, users.iter(), settings))?;
758748

759749
Ok(requests.into_iter().map(|r| r.as_ref().into()).collect())
760750
}
@@ -835,10 +825,10 @@ impl OlmMachine {
835825
share_strategy: CollectStrategy,
836826
) -> Result<Option<Request>, CryptoStoreError> {
837827
let user_id = parse_user_id(&user_id)?;
838-
let device_id = device_id.as_str().into();
828+
let device_id = device_id.into();
839829
let content = serde_json::from_str(&content)?;
840830

841-
let device = self.runtime.block_on(self.inner.get_device(&user_id, device_id, None))?;
831+
let device = self.runtime.block_on(self.inner.get_device(&user_id, &device_id, None))?;
842832

843833
if let Some(device) = device {
844834
let encrypted_content = self.runtime.block_on(device.encrypt_event_raw(
@@ -848,7 +838,7 @@ impl OlmMachine {
848838
))?;
849839

850840
let request = ToDeviceRequest::new(
851-
user_id.as_ref(),
841+
&user_id,
852842
DeviceIdOrAllDevices::DeviceId(device_id.to_owned()),
853843
"m.room.encrypted",
854844
encrypted_content.cast(),
@@ -1265,13 +1255,13 @@ impl OlmMachine {
12651255
methods: Vec<String>,
12661256
) -> Result<Option<RequestVerificationResult>, CryptoStoreError> {
12671257
let user_id = parse_user_id(&user_id)?;
1268-
let device_id = device_id.as_str().into();
1258+
let device_id = device_id.into();
12691259

12701260
let methods = methods.into_iter().map(VerificationMethod::from).collect();
12711261

12721262
Ok(
12731263
if let Some(device) =
1274-
self.runtime.block_on(self.inner.get_device(&user_id, device_id, None))?
1264+
self.runtime.block_on(self.inner.get_device(&user_id, &device_id, None))?
12751265
{
12761266
let (verification, request) = device.request_verification_with_methods(methods);
12771267

@@ -1357,11 +1347,11 @@ impl OlmMachine {
13571347
device_id: String,
13581348
) -> Result<Option<StartSasResult>, CryptoStoreError> {
13591349
let user_id = parse_user_id(&user_id)?;
1360-
let device_id = device_id.as_str().into();
1350+
let device_id = device_id.into();
13611351

13621352
Ok(
13631353
if let Some(device) =
1364-
self.runtime.block_on(self.inner.get_device(&user_id, device_id, None))?
1354+
self.runtime.block_on(self.inner.get_device(&user_id, &device_id, None))?
13651355
{
13661356
let (sas, request) = self.runtime.block_on(device.start_verification())?;
13671357

bindings/matrix-sdk-ffi/src/client.rs

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1600,8 +1600,8 @@ impl Client {
16001600
}
16011601

16021602
pub async fn get_profile(&self, user_id: String) -> Result<UserProfile, ClientError> {
1603-
let user_id = <&UserId>::try_from(user_id.as_str())?;
1604-
UserProfile::fetch(&self.inner.account(), user_id).await
1603+
let user_id = UserId::try_from(user_id)?;
1604+
UserProfile::fetch(&self.inner.account(), &user_id).await
16051605
}
16061606

16071607
pub async fn notification_client(
@@ -1686,8 +1686,8 @@ impl Client {
16861686
/// Otherwise use `join_room_by_id_or_alias` so you can pass a list of
16871687
/// server names for the homeserver to find the room.
16881688
pub async fn join_room_by_id(&self, room_id: String) -> Result<Arc<Room>, ClientError> {
1689-
let room_id = RoomId::parse(room_id)?;
1690-
let room = self.inner.join_room_by_id(room_id.as_ref()).await?;
1689+
let room_id = RoomId::try_from(room_id)?;
1690+
let room = self.inner.join_room_by_id(&room_id).await?;
16911691
Ok(Arc::new(Room::new(room, self.utd_hook_manager.get().cloned())))
16921692
}
16931693

@@ -1702,13 +1702,12 @@ impl Client {
17021702
room_id_or_alias: String,
17031703
server_names: Vec<String>,
17041704
) -> Result<Arc<Room>, ClientError> {
1705-
let room_id = RoomOrAliasId::parse(&room_id_or_alias)?;
1705+
let room_id = RoomOrAliasId::try_from(room_id_or_alias)?;
17061706
let server_names = server_names
17071707
.iter()
17081708
.map(|name| ServerName::try_from(name.as_str()))
17091709
.collect::<Result<Vec<_>, _>>()?;
1710-
let room =
1711-
self.inner.join_room_by_id_or_alias(room_id.as_ref(), server_names.as_ref()).await?;
1710+
let room = self.inner.join_room_by_id_or_alias(&room_id, server_names.as_ref()).await?;
17121711
Ok(Arc::new(Room::new(room, self.utd_hook_manager.get().cloned())))
17131712
}
17141713

@@ -1776,19 +1775,15 @@ impl Client {
17761775
room_id: String,
17771776
via_servers: Vec<String>,
17781777
) -> Result<Arc<RoomPreview>, ClientError> {
1779-
let room_id = RoomId::parse(&room_id).context("room_id is not a valid room id")?;
1778+
let room_id = RoomId::try_from(room_id).context("room_id is not a valid room id")?;
17801779

17811780
let via_servers = via_servers
17821781
.into_iter()
17831782
.map(ServerName::parse)
17841783
.collect::<Result<Vec<_>, _>>()
17851784
.context("at least one `via` server name is invalid")?;
17861785

1787-
// The `into()` call below doesn't work if I do `(&room_id).into()`, so I let
1788-
// rustc win that one fight.
1789-
let room_id: &RoomId = &room_id;
1790-
1791-
let room_preview = self.inner.get_room_preview(room_id.into(), via_servers).await?;
1786+
let room_preview = self.inner.get_room_preview(&room_id.into(), via_servers).await?;
17921787

17931788
Ok(Arc::new(RoomPreview::new(self.inner.clone(), room_preview)))
17941789
}
@@ -1799,13 +1794,9 @@ impl Client {
17991794
room_alias: String,
18001795
) -> Result<Arc<RoomPreview>, ClientError> {
18011796
let room_alias =
1802-
RoomAliasId::parse(&room_alias).context("room_alias is not a valid room alias")?;
1803-
1804-
// The `into()` call below doesn't work if I do `(&room_id).into()`, so I let
1805-
// rustc win that one fight.
1806-
let room_alias: &RoomAliasId = &room_alias;
1797+
RoomAliasId::try_from(room_alias).context("room_alias is not a valid room alias")?;
18071798

1808-
let room_preview = self.inner.get_room_preview(room_alias.into(), Vec::new()).await?;
1799+
let room_preview = self.inner.get_room_preview(&room_alias.into(), Vec::new()).await?;
18091800

18101801
Ok(Arc::new(RoomPreview::new(self.inner.clone(), room_preview)))
18111802
}

bindings/matrix-sdk-ffi/src/client_builder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ impl ClientBuilder {
406406
None => {
407407
if let Some(username) = builder.username {
408408
let user = UserId::parse(username)?;
409-
inner_builder.server_name(user.server_name())
409+
inner_builder.server_name(&user.server_name())
410410
} else {
411411
return Err(ClientBuildError::Generic {
412412
message: "Failed to build: One of homeserver_url, server_name, server_name_or_homeserver_url or username must be called.".to_owned(),

bindings/matrix-sdk-ffi/src/encryption.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ use matrix_sdk::{
2020
encryption::{backups, recovery},
2121
};
2222
use matrix_sdk_common::{SendOutsideWasm, SyncOutsideWasm};
23+
use ruma::UserId;
2324
use thiserror::Error;
2425
use tracing::{error, info};
2526
use zeroize::Zeroize;
@@ -466,7 +467,8 @@ impl Encryption {
466467
user_id: String,
467468
fallback_to_server: bool,
468469
) -> Result<Option<Arc<UserIdentity>>, ClientError> {
469-
match self.inner.get_user_identity(user_id.as_str().try_into()?).await {
470+
let user_id = UserId::try_from(user_id)?;
471+
match self.inner.get_user_identity(&user_id).await {
470472
Ok(Some(identity)) => {
471473
return Ok(Some(Arc::new(UserIdentity { inner: identity })));
472474
}
@@ -481,7 +483,7 @@ impl Encryption {
481483
info!("Requesting identity from the server.");
482484

483485
if fallback_to_server {
484-
let identity = self.inner.request_user_identity(user_id.as_str().try_into()?).await?;
486+
let identity = self.inner.request_user_identity(&user_id).await?;
485487
Ok(identity.map(|identity| Arc::new(UserIdentity { inner: identity })))
486488
} else {
487489
Ok(None)

bindings/matrix-sdk-ffi/src/room/mod.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -594,9 +594,8 @@ impl Room {
594594
}
595595

596596
pub async fn invite_user_by_id(&self, user_id: String) -> Result<(), ClientError> {
597-
let user =
598-
<&UserId>::try_from(user_id.as_str()).context("Could not create user from string")?;
599-
self.inner.invite_user_by_id(user).await?;
597+
let user = UserId::try_from(user_id).context("Could not create user from string")?;
598+
self.inner.invite_user_by_id(&user).await?;
600599
Ok(())
601600
}
602601

@@ -728,13 +727,17 @@ impl Room {
728727
updates: Vec<UserPowerLevelUpdate>,
729728
) -> Result<(), ClientError> {
730729
let updates = updates
731-
.iter()
730+
.into_iter()
732731
.map(|update| {
733-
let user_id: &UserId = update.user_id.as_str().try_into()?;
732+
let user_id: UserId = update.user_id.try_into()?;
734733
let power_level = Int::new(update.power_level).context("Invalid power level")?;
735734
Ok((user_id, power_level))
736735
})
737736
.collect::<Result<Vec<_>>>()?;
737+
let updates = updates
738+
.iter()
739+
.map(|(user_id, power_level)| (user_id, *power_level))
740+
.collect::<Vec<_>>();
738741

739742
self.inner.update_power_levels(updates).await.map_err(ClientError::from_err)?;
740743
Ok(())
@@ -814,7 +817,7 @@ impl Room {
814817
thread_root: Option<String>,
815818
) -> Result<(), ClientError> {
816819
let thread_root = thread_root.map(EventId::parse).transpose()?;
817-
Ok(self.inner.save_composer_draft(draft.try_into()?, thread_root.as_deref()).await?)
820+
Ok(self.inner.save_composer_draft(draft.try_into()?, thread_root.as_ref()).await?)
818821
}
819822

820823
/// Retrieve the `ComposerDraft` stored in the state store for this room.
@@ -823,7 +826,7 @@ impl Room {
823826
thread_root: Option<String>,
824827
) -> Result<Option<ComposerDraft>, ClientError> {
825828
let thread_root = thread_root.map(EventId::parse).transpose()?;
826-
Ok(self.inner.load_composer_draft(thread_root.as_deref()).await?.map(Into::into))
829+
Ok(self.inner.load_composer_draft(thread_root.as_ref()).await?.map(Into::into))
827830
}
828831

829832
/// Remove the `ComposerDraft` stored in the state store for this room.
@@ -832,7 +835,7 @@ impl Room {
832835
thread_root: Option<String>,
833836
) -> Result<(), ClientError> {
834837
let thread_root = thread_root.map(EventId::parse).transpose()?;
835-
Ok(self.inner.clear_composer_draft(thread_root.as_deref()).await?)
838+
Ok(self.inner.clear_composer_draft(thread_root.as_ref()).await?)
836839
}
837840

838841
/// Edit an event given its event id.

0 commit comments

Comments
 (0)