mirror of
https://github.com/chatmail/core.git
synced 2026-05-03 13:26:28 +03:00
Add stock strings for ephemeral timer changes
This commit is contained in:
committed by
link2xt
parent
059caee527
commit
db6623d0cf
@@ -4480,8 +4480,15 @@ void dc_event_unref(dc_event_t* event);
|
|||||||
#define DC_STR_UNKNOWN_SENDER_FOR_CHAT 72
|
#define DC_STR_UNKNOWN_SENDER_FOR_CHAT 72
|
||||||
#define DC_STR_SUBJECT_FOR_NEW_CONTACT 73
|
#define DC_STR_SUBJECT_FOR_NEW_CONTACT 73
|
||||||
#define DC_STR_FAILED_SENDING_TO 74
|
#define DC_STR_FAILED_SENDING_TO 74
|
||||||
|
#define DC_STR_EPHEMERAL_DISABLED 75
|
||||||
|
#define DC_STR_EPHEMERAL_SECONDS 76
|
||||||
|
#define DC_STR_EPHEMERAL_MINUTE 77
|
||||||
|
#define DC_STR_EPHEMERAL_HOUR 78
|
||||||
|
#define DC_STR_EPHEMERAL_DAY 79
|
||||||
|
#define DC_STR_EPHEMERAL_WEEK 80
|
||||||
|
#define DC_STR_EPHEMERAL_FOUR_WEEKS 81
|
||||||
|
|
||||||
#define DC_STR_COUNT 74
|
#define DC_STR_COUNT 81
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @}
|
* @}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ use crate::constants::*;
|
|||||||
use crate::contact::*;
|
use crate::contact::*;
|
||||||
use crate::context::Context;
|
use crate::context::Context;
|
||||||
use crate::dc_tools::*;
|
use crate::dc_tools::*;
|
||||||
use crate::ephemeral::Timer as EphemeralTimer;
|
use crate::ephemeral::{stock_ephemeral_timer_changed, Timer as EphemeralTimer};
|
||||||
use crate::error::{bail, ensure, format_err, Result};
|
use crate::error::{bail, ensure, format_err, Result};
|
||||||
use crate::events::Event;
|
use crate::events::Event;
|
||||||
use crate::headerdef::HeaderDef;
|
use crate::headerdef::HeaderDef;
|
||||||
@@ -653,15 +653,12 @@ async fn add_parts(
|
|||||||
{
|
{
|
||||||
match (*chat_id).inner_set_ephemeral_timer(context, timer).await {
|
match (*chat_id).inner_set_ephemeral_timer(context, timer).await {
|
||||||
Ok(()) => {
|
Ok(()) => {
|
||||||
let stock_str = context
|
chat::add_info_msg(
|
||||||
.stock_system_msg(
|
context,
|
||||||
StockMessage::MsgEphemeralTimerChanged,
|
*chat_id,
|
||||||
timer.to_string(),
|
stock_ephemeral_timer_changed(context, timer, from_id).await,
|
||||||
"",
|
)
|
||||||
from_id,
|
.await;
|
||||||
)
|
|
||||||
.await;
|
|
||||||
chat::add_info_msg(context, *chat_id, stock_str).await;
|
|
||||||
context.emit_event(Event::ChatEphemeralTimerModified {
|
context.emit_event(Event::ChatEphemeralTimerModified {
|
||||||
chat_id: *chat_id,
|
chat_id: *chat_id,
|
||||||
timer: timer.to_u32(),
|
timer: timer.to_u32(),
|
||||||
|
|||||||
104
src/ephemeral.rs
104
src/ephemeral.rs
@@ -188,16 +188,7 @@ impl ChatId {
|
|||||||
}
|
}
|
||||||
self.inner_set_ephemeral_timer(context, timer).await?;
|
self.inner_set_ephemeral_timer(context, timer).await?;
|
||||||
let mut msg = Message::new(Viewtype::Text);
|
let mut msg = Message::new(Viewtype::Text);
|
||||||
msg.text = Some(
|
msg.text = Some(stock_ephemeral_timer_changed(context, timer, DC_CONTACT_ID_SELF).await);
|
||||||
context
|
|
||||||
.stock_system_msg(
|
|
||||||
StockMessage::MsgEphemeralTimerChanged,
|
|
||||||
timer.to_string(),
|
|
||||||
"",
|
|
||||||
DC_CONTACT_ID_SELF,
|
|
||||||
)
|
|
||||||
.await,
|
|
||||||
);
|
|
||||||
msg.param.set_cmd(SystemMessage::EphemeralTimerChanged);
|
msg.param.set_cmd(SystemMessage::EphemeralTimerChanged);
|
||||||
if let Err(err) = send_msg(context, self, &mut msg).await {
|
if let Err(err) = send_msg(context, self, &mut msg).await {
|
||||||
error!(
|
error!(
|
||||||
@@ -209,6 +200,29 @@ impl ChatId {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns a stock message saying that ephemeral timer is changed to `timer` by `from_id`.
|
||||||
|
pub(crate) async fn stock_ephemeral_timer_changed(
|
||||||
|
context: &Context,
|
||||||
|
timer: Timer,
|
||||||
|
from_id: u32,
|
||||||
|
) -> String {
|
||||||
|
let stock_message = match timer {
|
||||||
|
Timer::Disabled => StockMessage::MsgEphemeralTimerDisabled,
|
||||||
|
Timer::Enabled { duration } => match duration {
|
||||||
|
60 => StockMessage::MsgEphemeralTimerMinute,
|
||||||
|
3600 => StockMessage::MsgEphemeralTimerHour,
|
||||||
|
86400 => StockMessage::MsgEphemeralTimerDay,
|
||||||
|
604_800 => StockMessage::MsgEphemeralTimerWeek,
|
||||||
|
2_419_200 => StockMessage::MsgEphemeralTimerFourWeeks,
|
||||||
|
_ => StockMessage::MsgEphemeralTimerEnabled,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
context
|
||||||
|
.stock_system_msg(stock_message, timer.to_string(), "", from_id)
|
||||||
|
.await
|
||||||
|
}
|
||||||
|
|
||||||
impl MsgId {
|
impl MsgId {
|
||||||
/// Returns ephemeral message timer value for the message.
|
/// Returns ephemeral message timer value for the message.
|
||||||
pub(crate) async fn ephemeral_timer(self, context: &Context) -> crate::sql::Result<Timer> {
|
pub(crate) async fn ephemeral_timer(self, context: &Context) -> crate::sql::Result<Timer> {
|
||||||
@@ -408,3 +422,73 @@ pub(crate) async fn load_imap_deletion_msgid(context: &Context) -> sql::Result<O
|
|||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
use crate::test_utils::*;
|
||||||
|
|
||||||
|
#[async_std::test]
|
||||||
|
async fn test_stock_ephemeral_messages() {
|
||||||
|
let context = TestContext::new().await.ctx;
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
stock_ephemeral_timer_changed(&context, Timer::Disabled, DC_CONTACT_ID_SELF).await,
|
||||||
|
"Message deletion timer is disabled by me."
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
stock_ephemeral_timer_changed(&context, Timer::Disabled, 0).await,
|
||||||
|
"Message deletion timer is disabled."
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
stock_ephemeral_timer_changed(&context, Timer::Enabled { duration: 1 }, 0).await,
|
||||||
|
"Message deletion timer is set to 1 s."
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
stock_ephemeral_timer_changed(&context, Timer::Enabled { duration: 30 }, 0).await,
|
||||||
|
"Message deletion timer is set to 30 s."
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
stock_ephemeral_timer_changed(&context, Timer::Enabled { duration: 60 }, 0).await,
|
||||||
|
"Message deletion timer is set to 1 minute."
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
stock_ephemeral_timer_changed(&context, Timer::Enabled { duration: 60 * 60 }, 0).await,
|
||||||
|
"Message deletion timer is set to 1 hour."
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
stock_ephemeral_timer_changed(
|
||||||
|
&context,
|
||||||
|
Timer::Enabled {
|
||||||
|
duration: 24 * 60 * 60
|
||||||
|
},
|
||||||
|
0
|
||||||
|
)
|
||||||
|
.await,
|
||||||
|
"Message deletion timer is set to 1 day."
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
stock_ephemeral_timer_changed(
|
||||||
|
&context,
|
||||||
|
Timer::Enabled {
|
||||||
|
duration: 7 * 24 * 60 * 60
|
||||||
|
},
|
||||||
|
0
|
||||||
|
)
|
||||||
|
.await,
|
||||||
|
"Message deletion timer is set to 1 week."
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
stock_ephemeral_timer_changed(
|
||||||
|
&context,
|
||||||
|
Timer::Enabled {
|
||||||
|
duration: 4 * 7 * 24 * 60 * 60
|
||||||
|
},
|
||||||
|
0
|
||||||
|
)
|
||||||
|
.await,
|
||||||
|
"Message deletion timer is set to 4 weeks."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
24
src/stock.rs
24
src/stock.rs
@@ -186,8 +186,28 @@ pub enum StockMessage {
|
|||||||
#[strum(props(fallback = "Failed to send message to %1$s."))]
|
#[strum(props(fallback = "Failed to send message to %1$s."))]
|
||||||
FailedSendingTo = 74,
|
FailedSendingTo = 74,
|
||||||
|
|
||||||
#[strum(props(fallback = "Ephemeral message timer changed to %1$s."))]
|
#[strum(props(fallback = "Message deletion timer is disabled."))]
|
||||||
MsgEphemeralTimerChanged = 75,
|
MsgEphemeralTimerDisabled = 75,
|
||||||
|
|
||||||
|
// A fallback message for unknown timer values.
|
||||||
|
// "s" stands for "second" SI unit here.
|
||||||
|
#[strum(props(fallback = "Message deletion timer is set to %1$s s."))]
|
||||||
|
MsgEphemeralTimerEnabled = 76,
|
||||||
|
|
||||||
|
#[strum(props(fallback = "Message deletion timer is set to 1 minute."))]
|
||||||
|
MsgEphemeralTimerMinute = 77,
|
||||||
|
|
||||||
|
#[strum(props(fallback = "Message deletion timer is set to 1 hour."))]
|
||||||
|
MsgEphemeralTimerHour = 78,
|
||||||
|
|
||||||
|
#[strum(props(fallback = "Message deletion timer is set to 1 day."))]
|
||||||
|
MsgEphemeralTimerDay = 79,
|
||||||
|
|
||||||
|
#[strum(props(fallback = "Message deletion timer is set to 1 week."))]
|
||||||
|
MsgEphemeralTimerWeek = 80,
|
||||||
|
|
||||||
|
#[strum(props(fallback = "Message deletion timer is set to 4 weeks."))]
|
||||||
|
MsgEphemeralTimerFourWeeks = 81,
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user