rust: Return the map of room keys that were imported

This commit is contained in:
Damir Jelić 2021-11-25 16:50:28 +01:00
parent 46ba0eec9f
commit d138306b08
4 changed files with 25 additions and 5 deletions

View File

@ -29,11 +29,11 @@ features = ["lax_deserialize"]
[dependencies.matrix-sdk-common] [dependencies.matrix-sdk-common]
git = "https://github.com/matrix-org/matrix-rust-sdk/" git = "https://github.com/matrix-org/matrix-rust-sdk/"
rev = "fc74526699b82ba5be3349e810ded51138dae7fc" rev = "7b6132b71e499224ed25bdc571b2a54d076551d6"
[dependencies.matrix-sdk-crypto] [dependencies.matrix-sdk-crypto]
git = "https://github.com/matrix-org/matrix-rust-sdk/" git = "https://github.com/matrix-org/matrix-rust-sdk/"
rev = "fc74526699b82ba5be3349e810ded51138dae7fc" rev = "7b6132b71e499224ed25bdc571b2a54d076551d6"
features = ["sled_cryptostore", "qrcode", "backups_v1"] features = ["sled_cryptostore", "qrcode", "backups_v1"]
[dependencies.tokio] [dependencies.tokio]

View File

@ -628,8 +628,20 @@ impl OlmMachine {
.block_on(self.inner.import_keys(keys, from_backup, listener))?; .block_on(self.inner.import_keys(keys, from_backup, listener))?;
Ok(KeysImportResult { Ok(KeysImportResult {
total: result.total_count as i64,
imported: result.imported_count as i64, imported: result.imported_count as i64,
total: result.total_count as i64,
keys: result
.keys
.into_iter()
.map(|(r, m)| {
(
r.to_string(),
m.into_iter()
.map(|(s, k)| (s, k.into_iter().collect()))
.collect(),
)
})
.collect(),
}) })
} }

View File

@ -59,8 +59,9 @@ dictionary DeviceLists {
}; };
dictionary KeysImportResult { dictionary KeysImportResult {
i64 total;
i64 imported; i64 imported;
i64 total;
record<DOMString, record<DOMString, sequence<string>>> keys;
}; };
dictionary DecryptedEvent { dictionary DecryptedEvent {

View File

@ -295,8 +295,15 @@ impl From<DeviceLists> for RumaDeviceLists {
} }
pub struct KeysImportResult { pub struct KeysImportResult {
pub total: i64, /// The number of room keys that were imported.
pub imported: i64, pub imported: i64,
/// The total number of room keys that were found in the export.
pub total: i64,
/// The map of keys that were imported.
///
/// It's a map from room id to a map of the sender key to a list of session
/// ids.
pub keys: HashMap<String, HashMap<String, Vec<String>>>,
} }
pub(crate) enum OwnedResponse { pub(crate) enum OwnedResponse {