From d6401ef278416efa1a0b064f98804bd65b4c84de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damir=20Jeli=C4=87?= Date: Fri, 24 Nov 2023 17:51:33 +0100 Subject: [PATCH] When disabling backups first delete it from the server --- .../matrix-sdk/src/encryption/backups/mod.rs | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/crates/matrix-sdk/src/encryption/backups/mod.rs b/crates/matrix-sdk/src/encryption/backups/mod.rs index a952c1f8c..0653907f1 100644 --- a/crates/matrix-sdk/src/encryption/backups/mod.rs +++ b/crates/matrix-sdk/src/encryption/backups/mod.rs @@ -189,17 +189,12 @@ impl Backups { if let Some(version) = backup_keys.backup_version { Span::current().record("version", &version); + info!("Deleting and disabling backup"); - info!("Disabling and deleting backup"); + self.delete_backup_from_server(version).await?; + info!("Backup successfully deleted"); olm_machine.backup_machine().disable_backup().await?; - - info!("Backup successfully disabled"); - - let request = - ruma::api::client::backup::delete_backup_version::v3::Request::new(version); - - self.client.send(request, Default::default()).await?; self.set_state(BackupState::Unknown); info!("Backup successfully disabled and deleted"); @@ -529,6 +524,25 @@ impl Backups { } } + async fn delete_backup_from_server(&self, version: String) -> Result<(), Error> { + let request = ruma::api::client::backup::delete_backup_version::v3::Request::new(version); + + match self.client.send(request, Default::default()).await { + Ok(_) => Ok(()), + Err(e) => { + if let Some(kind) = e.client_api_error_kind() { + if kind == &ErrorKind::NotFound { + Ok(()) + } else { + Err(e.into()) + } + } else { + Err(e.into()) + } + } + } + } + #[instrument(skip(self, olm_machine, request))] async fn send_backup_request( &self,