mirror of
https://github.com/TheFunny/TelegramTwitterMediaBot.git
synced 2026-09-24 23:42:18 +00:00
refactor(state): add ChatData::format_for for the per-site caption format
Four call sites (cache hit, fresh fetch, startup refetch, /debug preview) spelled out the same message_format.get(...).cloned().unwrap_or_default(); the accessor names the lookup and keeps the empty-format contract in one place.
This commit is contained in:
@@ -626,10 +626,7 @@ pub(crate) async fn execute_command(
|
||||
let format = CHAT_STORE
|
||||
.get(message.chat.id.0)
|
||||
.await
|
||||
.message_format
|
||||
.get(fetched.site_id)
|
||||
.cloned()
|
||||
.unwrap_or_default();
|
||||
.format_for(fetched.site_id);
|
||||
let caption = preview_caption(
|
||||
&format,
|
||||
&fetched.caption,
|
||||
|
||||
@@ -638,11 +638,7 @@ async fn url_media_inner(
|
||||
// Cache keys are prefixed with the site id ("twitter:…"), matching
|
||||
// the value a fresh fetch would read from Fetched::site_id.
|
||||
let site = x_media::site::site_id_from_key(&key);
|
||||
let format = chat_data
|
||||
.message_format
|
||||
.get(site)
|
||||
.cloned()
|
||||
.unwrap_or_default();
|
||||
let format = chat_data.format_for(site);
|
||||
// One call for both: `caption_from_fields` returns the truncated
|
||||
// built-in caption itself when the chat has no format for this site.
|
||||
let caption = x_media::site::caption_from_fields(
|
||||
@@ -713,11 +709,7 @@ async fn url_media_inner(
|
||||
}
|
||||
let chat_data = ctx.chat_store.get(chat_id).await;
|
||||
// Per-site caption format override (empty -> built-in caption).
|
||||
let format = chat_data
|
||||
.message_format
|
||||
.get(fetched.site_id)
|
||||
.cloned()
|
||||
.unwrap_or_default();
|
||||
let format = chat_data.format_for(fetched.site_id);
|
||||
let caption = fetched.caption_with(&format);
|
||||
// Raw render data for the link cache; the send fills in the
|
||||
// Telegram file ids and persists the entry.
|
||||
@@ -862,11 +854,7 @@ async fn refetch(
|
||||
return Ok(None);
|
||||
}
|
||||
let chat_data = ctx.chat_store.get(chat_id).await;
|
||||
let format = chat_data
|
||||
.message_format
|
||||
.get(fetched.site_id)
|
||||
.cloned()
|
||||
.unwrap_or_default();
|
||||
let format = chat_data.format_for(fetched.site_id);
|
||||
let caption = fetched.caption_with(&format);
|
||||
let cache_data = fetched
|
||||
.render_fields()
|
||||
|
||||
@@ -23,6 +23,14 @@ pub struct ChatData {
|
||||
pub message_format: HashMap<String, String>,
|
||||
}
|
||||
|
||||
impl ChatData {
|
||||
/// The chat's caption format for `site`, empty when it has none — the
|
||||
/// built-in caption then applies (`caption_from_fields`).
|
||||
pub fn format_for(&self, site: &str) -> String {
|
||||
self.message_format.get(site).cloned().unwrap_or_default()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Clone, Debug, Default)]
|
||||
pub struct EditMessage {
|
||||
pub url: String,
|
||||
|
||||
Reference in New Issue
Block a user