feat: stop saving txt_raw

It is redundant now that we have HTML view for long messages
and is not updated when the message is edited.
This commit is contained in:
link2xt
2025-03-28 23:08:36 +00:00
committed by l
parent d4847206cf
commit 386b91a9a7
6 changed files with 7 additions and 42 deletions

View File

@@ -673,7 +673,6 @@ pub struct MessageReadReceipt {
#[derive(Serialize, TypeDef, schemars::JsonSchema)] #[derive(Serialize, TypeDef, schemars::JsonSchema)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct MessageInfo { pub struct MessageInfo {
rawtext: String,
ephemeral_timer: EphemeralTimer, ephemeral_timer: EphemeralTimer,
/// When message is ephemeral this contains the timestamp of the message expiry /// When message is ephemeral this contains the timestamp of the message expiry
ephemeral_timestamp: Option<i64>, ephemeral_timestamp: Option<i64>,
@@ -686,7 +685,6 @@ pub struct MessageInfo {
impl MessageInfo { impl MessageInfo {
pub async fn from_msg_id(context: &Context, msg_id: MsgId) -> Result<Self> { pub async fn from_msg_id(context: &Context, msg_id: MsgId) -> Result<Self> {
let message = Message::load_from_db(context, msg_id).await?; let message = Message::load_from_db(context, msg_id).await?;
let rawtext = msg_id.rawtext(context).await?;
let ephemeral_timer = message.get_ephemeral_timer().into(); let ephemeral_timer = message.get_ephemeral_timer().into();
let ephemeral_timestamp = match message.get_ephemeral_timer() { let ephemeral_timestamp = match message.get_ephemeral_timer() {
deltachat::ephemeral::Timer::Disabled => None, deltachat::ephemeral::Timer::Disabled => None,
@@ -699,7 +697,6 @@ impl MessageInfo {
let hop_info = msg_id.hop_info(context).await?; let hop_info = msg_id.hop_info(context).await?;
Ok(Self { Ok(Self {
rawtext,
ephemeral_timer, ephemeral_timer,
ephemeral_timestamp, ephemeral_timestamp,
error: message.error(), error: message.error(),

View File

@@ -4415,7 +4415,7 @@ pub(crate) async fn save_copy_in_self_talk(
bail!("message already saved."); bail!("message already saved.");
} }
let copy_fields = "from_id, to_id, timestamp_sent, timestamp_rcvd, type, txt, txt_raw, \ let copy_fields = "from_id, to_id, timestamp_sent, timestamp_rcvd, type, txt, \
mime_modified, mime_headers, mime_compressed, mime_in_reply_to, subject, msgrmsg"; mime_modified, mime_headers, mime_compressed, mime_in_reply_to, subject, msgrmsg";
let row_id = context let row_id = context
.sql .sql

View File

@@ -16,7 +16,7 @@ use crate::chat::{send_msg, Chat, ChatId, ChatIdBlocked, ChatVisibility};
use crate::chatlist_events; use crate::chatlist_events;
use crate::config::Config; use crate::config::Config;
use crate::constants::{ use crate::constants::{
Blocked, Chattype, VideochatType, DC_CHAT_ID_TRASH, DC_DESIRED_TEXT_LEN, DC_MSG_ID_LAST_SPECIAL, Blocked, Chattype, VideochatType, DC_CHAT_ID_TRASH, DC_MSG_ID_LAST_SPECIAL,
}; };
use crate::contact::{self, Contact, ContactId}; use crate::contact::{self, Contact, ContactId};
use crate::context::Context; use crate::context::Context;
@@ -35,7 +35,7 @@ use crate::summary::Summary;
use crate::sync::SyncData; use crate::sync::SyncData;
use crate::tools::{ use crate::tools::{
buf_compress, buf_decompress, get_filebytes, get_filemeta, gm2local_offset, read_file, buf_compress, buf_decompress, get_filebytes, get_filemeta, gm2local_offset, read_file,
sanitize_filename, time, timestamp_to_str, truncate, sanitize_filename, time, timestamp_to_str,
}; };
/// Message ID, including reserved IDs. /// Message ID, including reserved IDs.
@@ -174,15 +174,6 @@ impl MsgId {
self.0 self.0
} }
/// Returns raw text of a message, used for message info
pub async fn rawtext(self, context: &Context) -> Result<String> {
Ok(context
.sql
.query_get_value("SELECT txt_raw FROM msgs WHERE id=?", (self,))
.await?
.unwrap_or_default())
}
/// Returns server foldernames and UIDs of a message, used for message info /// Returns server foldernames and UIDs of a message, used for message info
pub async fn get_info_server_urls( pub async fn get_info_server_urls(
context: &Context, context: &Context,
@@ -219,12 +210,9 @@ impl MsgId {
/// Returns detailed message information in a multi-line text form. /// Returns detailed message information in a multi-line text form.
pub async fn get_info(self, context: &Context) -> Result<String> { pub async fn get_info(self, context: &Context) -> Result<String> {
let msg = Message::load_from_db(context, self).await?; let msg = Message::load_from_db(context, self).await?;
let rawtxt: String = self.rawtext(context).await?;
let mut ret = String::new(); let mut ret = String::new();
let rawtxt = truncate(rawtxt.trim(), DC_DESIRED_TEXT_LEN);
let fts = timestamp_to_str(msg.get_timestamp()); let fts = timestamp_to_str(msg.get_timestamp());
ret += &format!("Sent: {fts}"); ret += &format!("Sent: {fts}");
@@ -335,9 +323,6 @@ impl MsgId {
if duration != 0 { if duration != 0 {
ret += &format!("Duration: {duration} ms\n",); ret += &format!("Duration: {duration} ms\n",);
} }
if !rawtxt.is_empty() {
ret += &format!("\n{rawtxt}\n");
}
if !msg.rfc724_mid.is_empty() { if !msg.rfc724_mid.is_empty() {
ret += &format!("\nMessage-ID: {}", msg.rfc724_mid); ret += &format!("\nMessage-ID: {}", msg.rfc724_mid);

View File

@@ -1539,7 +1539,6 @@ async fn add_parts(
} }
} }
let mut txt_raw = "".to_string();
let (msg, typ): (&str, Viewtype) = if let Some(better_msg) = &better_msg { let (msg, typ): (&str, Viewtype) = if let Some(better_msg) = &better_msg {
if better_msg.is_empty() && is_partial_download.is_none() { if better_msg.is_empty() && is_partial_download.is_none() {
chat_id = DC_CHAT_ID_TRASH; chat_id = DC_CHAT_ID_TRASH;
@@ -1554,11 +1553,6 @@ async fn add_parts(
save_mime_modified |= mime_parser.is_mime_modified && !part_is_empty && !hidden; save_mime_modified |= mime_parser.is_mime_modified && !part_is_empty && !hidden;
let save_mime_modified = save_mime_modified && parts.peek().is_none(); let save_mime_modified = save_mime_modified && parts.peek().is_none();
if part.typ == Viewtype::Text {
let msg_raw = part.msg_raw.as_ref().cloned().unwrap_or_default();
txt_raw = format!("{subject}\n\n{msg_raw}");
}
let ephemeral_timestamp = if in_fresh { let ephemeral_timestamp = if in_fresh {
0 0
} else { } else {
@@ -1585,7 +1579,7 @@ INSERT INTO msgs
rfc724_mid, chat_id, rfc724_mid, chat_id,
from_id, to_id, timestamp, timestamp_sent, from_id, to_id, timestamp, timestamp_sent,
timestamp_rcvd, type, state, msgrmsg, timestamp_rcvd, type, state, msgrmsg,
txt, txt_normalized, subject, txt_raw, param, hidden, txt, txt_normalized, subject, param, hidden,
bytes, mime_headers, mime_compressed, mime_in_reply_to, bytes, mime_headers, mime_compressed, mime_in_reply_to,
mime_references, mime_modified, error, ephemeral_timer, mime_references, mime_modified, error, ephemeral_timer,
ephemeral_timestamp, download_state, hop_info ephemeral_timestamp, download_state, hop_info
@@ -1594,7 +1588,7 @@ INSERT INTO msgs
?, ?,
?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, 1, ?, ?, ?, ?, ?, 1,
?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ? ?, ?, ?, ?
@@ -1604,7 +1598,7 @@ SET rfc724_mid=excluded.rfc724_mid, chat_id=excluded.chat_id,
from_id=excluded.from_id, to_id=excluded.to_id, timestamp_sent=excluded.timestamp_sent, from_id=excluded.from_id, to_id=excluded.to_id, timestamp_sent=excluded.timestamp_sent,
type=excluded.type, state=max(state,excluded.state), msgrmsg=excluded.msgrmsg, type=excluded.type, state=max(state,excluded.state), msgrmsg=excluded.msgrmsg,
txt=excluded.txt, txt_normalized=excluded.txt_normalized, subject=excluded.subject, txt=excluded.txt, txt_normalized=excluded.txt_normalized, subject=excluded.subject,
txt_raw=excluded.txt_raw, param=excluded.param, param=excluded.param,
hidden=excluded.hidden,bytes=excluded.bytes, mime_headers=excluded.mime_headers, hidden=excluded.hidden,bytes=excluded.bytes, mime_headers=excluded.mime_headers,
mime_compressed=excluded.mime_compressed, mime_in_reply_to=excluded.mime_in_reply_to, mime_compressed=excluded.mime_compressed, mime_in_reply_to=excluded.mime_in_reply_to,
mime_references=excluded.mime_references, mime_modified=excluded.mime_modified, error=excluded.error, ephemeral_timer=excluded.ephemeral_timer, mime_references=excluded.mime_references, mime_modified=excluded.mime_modified, error=excluded.error, ephemeral_timer=excluded.ephemeral_timer,
@@ -1626,8 +1620,6 @@ RETURNING id
if trash || hidden { "" } else { msg }, if trash || hidden { "" } else { msg },
if trash || hidden { None } else { message::normalize_text(msg) }, if trash || hidden { None } else { message::normalize_text(msg) },
if trash || hidden { "" } else { &subject }, if trash || hidden { "" } else { &subject },
// txt_raw might contain invalid utf8
if trash || hidden { "" } else { &txt_raw },
if trash { if trash {
"".to_string() "".to_string()
} else { } else {

View File

@@ -66,7 +66,7 @@ CREATE TABLE msgs (
msgrmsg INTEGER DEFAULT 1, msgrmsg INTEGER DEFAULT 1,
bytes INTEGER DEFAULT 0, bytes INTEGER DEFAULT 0,
txt TEXT DEFAULT '', txt TEXT DEFAULT '',
txt_raw TEXT DEFAULT '', txt_raw TEXT DEFAULT '', -- deprecated 2025-03-29
param TEXT DEFAULT '', param TEXT DEFAULT '',
starred INTEGER DEFAULT 0, starred INTEGER DEFAULT 0,
timestamp_sent INTEGER DEFAULT 0, timestamp_sent INTEGER DEFAULT 0,

View File

@@ -43,8 +43,6 @@ async fn test_parse_receive_headers_integration() {
let raw = include_bytes!("../../test-data/message/mail_with_cc.txt"); let raw = include_bytes!("../../test-data/message/mail_with_cc.txt");
let expected = r"State: Fresh let expected = r"State: Fresh
hi
Message-ID: 2dfdbde7@example.org Message-ID: 2dfdbde7@example.org
Hop: From: localhost; By: hq5.merlinux.eu; Date: Sat, 14 Sep 2019 17:00:22 +0000 Hop: From: localhost; By: hq5.merlinux.eu; Date: Sat, 14 Sep 2019 17:00:22 +0000
@@ -56,13 +54,6 @@ DKIM Results: Passed=true";
let raw = include_bytes!("../../test-data/message/encrypted_with_received_headers.eml"); let raw = include_bytes!("../../test-data/message/encrypted_with_received_headers.eml");
let expected = "State: Fresh, Encrypted let expected = "State: Fresh, Encrypted
Re: Message from alice@example.org
hi back\r\n\
\r\n\
-- \r\n\
Sent with my Delta Chat Messenger: https://delta.chat
Message-ID: Mr.adQpEwndXLH.LPDdlFVJ7wG@example.net Message-ID: Mr.adQpEwndXLH.LPDdlFVJ7wG@example.net
Hop: From: [127.0.0.1]; By: mail.example.org; Date: Mon, 27 Dec 2021 11:21:21 +0000 Hop: From: [127.0.0.1]; By: mail.example.org; Date: Mon, 27 Dec 2021 11:21:21 +0000