mirror of
https://github.com/chatmail/core.git
synced 2026-05-08 09:26:29 +03:00
fix: Use ChatIdBlocked::lookup_by_contact() instead of ChatId's method when applicable
`ChatId::lookup_by_contact()` returns `None` for blocked chats, so it should be only used if we need to filter out blocked chats, e.g. when building a chatlist.
This commit is contained in:
@@ -2303,7 +2303,9 @@ async fn update_special_chat_name(
|
|||||||
contact_id: ContactId,
|
contact_id: ContactId,
|
||||||
name: String,
|
name: String,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
if let Some(chat_id) = ChatId::lookup_by_contact(context, contact_id).await? {
|
if let Some(ChatIdBlocked { id: chat_id, .. }) =
|
||||||
|
ChatIdBlocked::lookup_by_contact(context, contact_id).await?
|
||||||
|
{
|
||||||
// the `!= name` condition avoids unneeded writes
|
// the `!= name` condition avoids unneeded writes
|
||||||
context
|
context
|
||||||
.sql
|
.sql
|
||||||
@@ -4478,9 +4480,10 @@ impl Context {
|
|||||||
}
|
}
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
ChatId::lookup_by_contact(self, contact_id)
|
ChatIdBlocked::lookup_by_contact(self, contact_id)
|
||||||
.await?
|
.await?
|
||||||
.with_context(|| format!("No chat for addr '{addr}'"))?
|
.with_context(|| format!("No chat for addr '{addr}'"))?
|
||||||
|
.id
|
||||||
}
|
}
|
||||||
SyncId::Grpid(grpid) => {
|
SyncId::Grpid(grpid) => {
|
||||||
if let SyncAction::CreateBroadcast(name) = action {
|
if let SyncAction::CreateBroadcast(name) = action {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ use tokio::task;
|
|||||||
use tokio::time::{timeout, Duration};
|
use tokio::time::{timeout, Duration};
|
||||||
|
|
||||||
use crate::aheader::EncryptPreference;
|
use crate::aheader::EncryptPreference;
|
||||||
use crate::chat::{ChatId, ProtectionStatus};
|
use crate::chat::{ChatId, ChatIdBlocked, ProtectionStatus};
|
||||||
use crate::color::str_to_color;
|
use crate::color::str_to_color;
|
||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
use crate::constants::{Blocked, Chattype, DC_GCL_ADD_SELF, DC_GCL_VERIFIED_ONLY};
|
use crate::constants::{Blocked, Chattype, DC_GCL_ADD_SELF, DC_GCL_VERIFIED_ONLY};
|
||||||
@@ -1315,7 +1315,9 @@ impl Contact {
|
|||||||
pub async fn is_profile_verified(&self, context: &Context) -> Result<bool> {
|
pub async fn is_profile_verified(&self, context: &Context) -> Result<bool> {
|
||||||
let contact_id = self.id;
|
let contact_id = self.id;
|
||||||
|
|
||||||
if let Some(chat_id) = ChatId::lookup_by_contact(context, contact_id).await? {
|
if let Some(ChatIdBlocked { id: chat_id, .. }) =
|
||||||
|
ChatIdBlocked::lookup_by_contact(context, contact_id).await?
|
||||||
|
{
|
||||||
Ok(chat_id.is_protected(context).await? == ProtectionStatus::Protected)
|
Ok(chat_id.is_protected(context).await? == ProtectionStatus::Protected)
|
||||||
} else {
|
} else {
|
||||||
// 1:1 chat does not exist.
|
// 1:1 chat does not exist.
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ use async_channel::Receiver;
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use tokio::time::timeout;
|
use tokio::time::timeout;
|
||||||
|
|
||||||
use crate::chat::{send_msg, ChatId};
|
use crate::chat::{send_msg, ChatId, ChatIdBlocked};
|
||||||
use crate::constants::{DC_CHAT_ID_LAST_SPECIAL, DC_CHAT_ID_TRASH};
|
use crate::constants::{DC_CHAT_ID_LAST_SPECIAL, DC_CHAT_ID_TRASH};
|
||||||
use crate::contact::ContactId;
|
use crate::contact::ContactId;
|
||||||
use crate::context::Context;
|
use crate::context::Context;
|
||||||
@@ -378,11 +378,13 @@ WHERE
|
|||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
if let Some(delete_device_after) = context.get_config_delete_device_after().await? {
|
if let Some(delete_device_after) = context.get_config_delete_device_after().await? {
|
||||||
let self_chat_id = ChatId::lookup_by_contact(context, ContactId::SELF)
|
let self_chat_id = ChatIdBlocked::lookup_by_contact(context, ContactId::SELF)
|
||||||
.await?
|
.await?
|
||||||
|
.map(|c| c.id)
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
let device_chat_id = ChatId::lookup_by_contact(context, ContactId::DEVICE)
|
let device_chat_id = ChatIdBlocked::lookup_by_contact(context, ContactId::DEVICE)
|
||||||
.await?
|
.await?
|
||||||
|
.map(|c| c.id)
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
|
||||||
let threshold_timestamp = now.saturating_sub(delete_device_after);
|
let threshold_timestamp = now.saturating_sub(delete_device_after);
|
||||||
@@ -490,11 +492,13 @@ pub(crate) async fn delete_expired_messages(context: &Context, now: i64) -> Resu
|
|||||||
/// `delete_device_after` setting being set.
|
/// `delete_device_after` setting being set.
|
||||||
async fn next_delete_device_after_timestamp(context: &Context) -> Result<Option<i64>> {
|
async fn next_delete_device_after_timestamp(context: &Context) -> Result<Option<i64>> {
|
||||||
if let Some(delete_device_after) = context.get_config_delete_device_after().await? {
|
if let Some(delete_device_after) = context.get_config_delete_device_after().await? {
|
||||||
let self_chat_id = ChatId::lookup_by_contact(context, ContactId::SELF)
|
let self_chat_id = ChatIdBlocked::lookup_by_contact(context, ContactId::SELF)
|
||||||
.await?
|
.await?
|
||||||
|
.map(|c| c.id)
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
let device_chat_id = ChatId::lookup_by_contact(context, ContactId::DEVICE)
|
let device_chat_id = ChatIdBlocked::lookup_by_contact(context, ContactId::DEVICE)
|
||||||
.await?
|
.await?
|
||||||
|
.map(|c| c.id)
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
|
||||||
let oldest_message_timestamp: Option<i64> = context
|
let oldest_message_timestamp: Option<i64> = context
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ use serde::{Deserialize, Serialize};
|
|||||||
use tokio::{fs, io};
|
use tokio::{fs, io};
|
||||||
|
|
||||||
use crate::blob::BlobObject;
|
use crate::blob::BlobObject;
|
||||||
use crate::chat::{Chat, ChatId};
|
use crate::chat::{Chat, ChatId, ChatIdBlocked};
|
||||||
use crate::chatlist_events;
|
use crate::chatlist_events;
|
||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
use crate::constants::{
|
use crate::constants::{
|
||||||
@@ -1813,8 +1813,9 @@ pub async fn estimate_deletion_cnt(
|
|||||||
from_server: bool,
|
from_server: bool,
|
||||||
seconds: i64,
|
seconds: i64,
|
||||||
) -> Result<usize> {
|
) -> Result<usize> {
|
||||||
let self_chat_id = ChatId::lookup_by_contact(context, ContactId::SELF)
|
let self_chat_id = ChatIdBlocked::lookup_by_contact(context, ContactId::SELF)
|
||||||
.await?
|
.await?
|
||||||
|
.map(|c| c.id)
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
let threshold_timestamp = time() - seconds;
|
let threshold_timestamp = time() - seconds;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user