Skip to content

Commit d3c7b3a

Browse files
committed
api!: make log module private
1 parent 2394394 commit d3c7b3a

File tree

6 files changed

+37
-17
lines changed

6 files changed

+37
-17
lines changed

deltachat-jsonrpc/src/api.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ use deltachat::constants::DC_MSG_ID_DAYMARKER;
1919
use deltachat::contact::{may_be_valid_addr, Contact, ContactId, Origin};
2020
use deltachat::context::get_info;
2121
use deltachat::ephemeral::Timer;
22+
use deltachat::imex;
2223
use deltachat::location;
2324
use deltachat::message::get_msg_read_receipts;
2425
use deltachat::message::{
@@ -35,7 +36,6 @@ use deltachat::securejoin;
3536
use deltachat::stock_str::StockMessage;
3637
use deltachat::webxdc::StatusUpdateSerial;
3738
use deltachat::EventEmitter;
38-
use deltachat::{imex, info};
3939
use sanitize_filename::is_sanitized;
4040
use tokio::fs;
4141
use tokio::sync::{watch, Mutex, RwLock};
@@ -1919,12 +1919,10 @@ impl CommandApi {
19191919
instance_msg_id: u32,
19201920
) -> Result<()> {
19211921
let ctx = self.get_context(account_id).await?;
1922-
let fut = send_webxdc_realtime_advertisement(&ctx, MsgId::new(instance_msg_id)).await?;
1923-
if let Some(fut) = fut {
1924-
tokio::spawn(async move {
1925-
fut.await.ok();
1926-
info!(ctx, "send_webxdc_realtime_advertisement done")
1927-
});
1922+
if let Some(fut) =
1923+
send_webxdc_realtime_advertisement(&ctx, MsgId::new(instance_msg_id)).await?
1924+
{
1925+
tokio::spawn(fut);
19281926
}
19291927
Ok(())
19301928
}
@@ -1955,7 +1953,9 @@ impl CommandApi {
19551953
instance_msg_id: u32,
19561954
) -> Result<WebxdcMessageInfo> {
19571955
let ctx = self.get_context(account_id).await?;
1958-
WebxdcMessageInfo::get_for_message(&ctx, MsgId::new(instance_msg_id)).await
1956+
WebxdcMessageInfo::get_for_message(&ctx, MsgId::new(instance_msg_id))
1957+
.await
1958+
.context("No webxdc info available")?
19591959
}
19601960

19611961
/// Get href from a WebxdcInfoMessage which might include a hash holding

deltachat-jsonrpc/src/api/types/webxdc.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,12 @@ impl WebxdcMessageInfo {
4949
pub async fn get_for_message(
5050
context: &Context,
5151
instance_message_id: MsgId,
52-
) -> anyhow::Result<Self> {
52+
) -> anyhow::Result<Option<Self>> {
5353
let message = Message::load_from_db(context, instance_message_id).await?;
54+
let Some(webxdc_info) = message.get_webxdc_info_or_log_err(context).await else {
55+
return Ok(None);
56+
};
57+
5458
let WebxdcInfo {
5559
name,
5660
icon,
@@ -62,9 +66,9 @@ impl WebxdcMessageInfo {
6266
self_addr,
6367
send_update_interval,
6468
send_update_max_size,
65-
} = message.get_webxdc_info(context).await?;
69+
} = webxdc_info;
6670

67-
Ok(Self {
71+
Ok(Some(Self {
6872
name,
6973
icon,
7074
document: maybe_empty_string_to_option(document),
@@ -74,6 +78,6 @@ impl WebxdcMessageInfo {
7478
self_addr,
7579
send_update_interval,
7680
send_update_max_size,
77-
})
81+
}))
7882
}
7983
}

deltachat-repl/src/cmdline.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ use deltachat::context::*;
1616
use deltachat::download::DownloadState;
1717
use deltachat::imex::*;
1818
use deltachat::location;
19-
use deltachat::log::LogExt;
2019
use deltachat::message::{self, Message, MessageState, MsgId, Viewtype};
2120
use deltachat::mimeparser::SystemMessage;
2221
use deltachat::peer_channels::{send_webxdc_realtime_advertisement, send_webxdc_realtime_data};
@@ -555,7 +554,7 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu
555554
context.maybe_network().await;
556555
}
557556
"housekeeping" => {
558-
sql::housekeeping(&context).await.log_err(&context).ok();
557+
sql::housekeeping(&context).await?;
559558
}
560559
"listchats" | "listarchived" | "chats" => {
561560
let listflags = if arg0 == "listarchived" {

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ extern crate rusqlite;
3737
extern crate strum_macros;
3838

3939
#[macro_use]
40-
pub mod log;
40+
mod log;
4141

4242
#[cfg(feature = "internals")]
4343
#[macro_use]

src/webxdc.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ use crate::contact::ContactId;
4040
use crate::context::Context;
4141
use crate::events::EventType;
4242
use crate::key::{load_self_public_key, DcKey};
43+
use crate::log::LogExt as _;
4344
use crate::message::{Message, MessageState, MsgId, Viewtype};
4445
use crate::mimefactory::RECOMMENDED_FILE_SIZE;
4546
use crate::mimeparser::SystemMessage;
@@ -898,7 +899,10 @@ impl Message {
898899
/// Return info from manifest.toml or from fallbacks.
899900
pub async fn get_webxdc_info(&self, context: &Context) -> Result<WebxdcInfo> {
900901
ensure!(self.viewtype == Viewtype::Webxdc, "No webxdc instance.");
901-
let mut archive = self.get_webxdc_archive(context).await?;
902+
let mut archive = self
903+
.get_webxdc_archive(context)
904+
.await
905+
.context("Failed to open Webxdc archive")?;
902906

903907
let mut manifest = get_blob(&mut archive, "manifest.toml")
904908
.await
@@ -961,6 +965,14 @@ impl Message {
961965
})
962966
}
963967

968+
/// Return info from manifest.toml, ignoring errors.
969+
///
970+
/// If there is an error during reading the file,
971+
/// returns `None` and logs the error.
972+
pub async fn get_webxdc_info_or_log_err(&self, context: &Context) -> Option<WebxdcInfo> {
973+
self.get_webxdc_info(context).await.log_err(context).ok()
974+
}
975+
964976
async fn get_webxdc_self_addr(&self, context: &Context) -> Result<String> {
965977
let fingerprint = load_self_public_key(context).await?.dc_fingerprint().hex();
966978
let data = format!("{}-{}", fingerprint, self.rfc724_mid);

src/webxdc/webxdc_tests.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,12 @@ async fn test_set_draft_invalid_webxdc() -> Result<()> {
137137

138138
// draft should not fail
139139
chat_id.set_draft(&t, Some(&mut instance)).await?;
140-
chat_id.get_draft(&t).await.unwrap();
140+
let draft_msg = chat_id.get_draft(&t).await?.expect("draft should exist");
141+
142+
// Loading info fails because webxdc is invalid.
143+
assert!(draft_msg.get_webxdc_info(&t).await.is_err());
144+
assert!(draft_msg.get_webxdc_info_or_log_err(&t).await.is_none());
145+
141146
Ok(())
142147
}
143148

0 commit comments

Comments
 (0)