fixes
This commit is contained in:
@@ -1,3 +1,7 @@
|
||||
use crate::constants::{
|
||||
LAZY_LOAD_USERS_PER_TICK, MAX_CHAT_USER_IDS, MAX_CHATS, MAX_MESSAGES_IN_CHAT,
|
||||
MAX_USER_CACHE_SIZE, TDLIB_CHAT_LIMIT, TDLIB_MESSAGE_LIMIT,
|
||||
};
|
||||
use std::collections::HashMap;
|
||||
use std::env;
|
||||
use std::time::Instant;
|
||||
@@ -7,15 +11,6 @@ use tdlib_rs::enums::{
|
||||
};
|
||||
use tdlib_rs::types::TextEntity;
|
||||
|
||||
/// Максимальный размер кэшей пользователей
|
||||
const MAX_USER_CACHE_SIZE: usize = 500;
|
||||
/// Максимальное количество сообщений в текущем чате
|
||||
const MAX_MESSAGES_IN_CHAT: usize = 500;
|
||||
/// Максимальное количество чатов
|
||||
const MAX_CHATS: usize = 200;
|
||||
/// Максимальный размер кэша chat_user_ids
|
||||
const MAX_CHAT_USER_IDS: usize = 500;
|
||||
|
||||
/// Простой LRU-кэш на основе HashMap + Vec для отслеживания порядка
|
||||
pub struct LruCache<V> {
|
||||
map: HashMap<i64, V>,
|
||||
@@ -1312,11 +1307,11 @@ impl TdClient {
|
||||
chat_id,
|
||||
query.to_string(),
|
||||
None, // sender_id
|
||||
0, // from_message_id
|
||||
0, // offset
|
||||
50, // limit
|
||||
None, // filter (no filter = search by text)
|
||||
0, // message_thread_id
|
||||
0, // from_message_id
|
||||
0, // offset
|
||||
TDLIB_MESSAGE_LIMIT, // limit
|
||||
None, // filter (no filter = search by text)
|
||||
0, // message_thread_id
|
||||
0, // saved_messages_topic_id
|
||||
self.client_id,
|
||||
)
|
||||
@@ -1895,15 +1890,15 @@ impl TdClient {
|
||||
/// Загружает только последние 5 запросов за цикл для снижения нагрузки
|
||||
pub async fn process_pending_user_ids(&mut self) {
|
||||
// Берём только последние запросы (они актуальнее — от недавних сообщений)
|
||||
const BATCH_SIZE: usize = 5;
|
||||
const LAZY_LOAD_USERS_PER_TICK: usize = 5;
|
||||
|
||||
// Убираем дубликаты и уже загруженные
|
||||
self.pending_user_ids
|
||||
.retain(|id| !self.user_names.contains_key(id));
|
||||
self.pending_user_ids.dedup();
|
||||
|
||||
// Берём последние BATCH_SIZE элементов
|
||||
let start = self.pending_user_ids.len().saturating_sub(BATCH_SIZE);
|
||||
// Берём последние LAZY_LOAD_USERS_PER_TICK элементов
|
||||
let start = self.pending_user_ids.len().saturating_sub(LAZY_LOAD_USERS_PER_TICK);
|
||||
let batch: Vec<i64> = self.pending_user_ids.drain(start..).collect();
|
||||
|
||||
for user_id in batch {
|
||||
|
||||
Reference in New Issue
Block a user