diff --git a/src/imex.rs b/src/imex.rs index 094ea88b6..3da2612a2 100644 --- a/src/imex.rs +++ b/src/imex.rs @@ -17,7 +17,6 @@ use crate::blob::BlobDirContents; use crate::chat::delete_and_reset_all_device_msgs; use crate::config::Config; use crate::context::Context; -use crate::e2ee; use crate::events::EventType; use crate::key::{self, DcKey, DcSecretKey, SignedPublicKey, SignedSecretKey}; use crate::log::{error, info, warn, LogExt}; @@ -27,6 +26,7 @@ use crate::sql; use crate::tools::{ create_folder, delete_file, get_filesuffix_lc, read_file, time, write_file, TempPathGuard, }; +use crate::{e2ee, stock_str}; mod key_transfer; mod transfer; @@ -102,7 +102,14 @@ pub async fn imex( if let Err(err) = res.as_ref() { // We are using Anyhow's .context() and to show the inner error, too, we need the {:#}: - error!(context, "IMEX failed to complete: {:#}", err); + if err + .to_string() + .contains("Backup too new, please update Delta Chat") + { + error!(context, "{}", stock_str::old_backup(context)); + } else { + error!(context, "IMEX failed to complete: {:#}", err); + } context.emit_event(EventType::ImexProgress(0)); } else { info!(context, "IMEX successfully completed"); diff --git a/src/stock_str.rs b/src/stock_str.rs index aca982141..bddbff336 100644 --- a/src/stock_str.rs +++ b/src/stock_str.rs @@ -395,6 +395,9 @@ pub enum StockMessage { #[strum(props(fallback = "I left the group."))] MsgILeftGroup = 166, + #[strum(props(fallback = "The imported backup version is too old"))] + OldBackupVersion = 167, + #[strum(props(fallback = "Messages are guaranteed to be end-to-end encrypted from now on."))] ChatProtectionEnabled = 170, @@ -570,6 +573,10 @@ pub(crate) async fn video(context: &Context) -> String { translated(context, StockMessage::Video).await } +pub(crate) async fn old_backup(context: &Context) -> String { + translated(context, StockMessage::OldBackupVersion) +} + /// Stock string: `Audio`. pub(crate) async fn audio(context: &Context) -> String { translated(context, StockMessage::Audio).await