commit
This commit is contained in:
@@ -2,9 +2,9 @@ mod state;
|
||||
|
||||
pub use state::AppScreen;
|
||||
|
||||
use ratatui::widgets::ListState;
|
||||
use crate::tdlib::client::ChatInfo;
|
||||
use crate::tdlib::TdClient;
|
||||
use ratatui::widgets::ListState;
|
||||
|
||||
pub struct App {
|
||||
pub config: crate::config::Config,
|
||||
@@ -87,7 +87,6 @@ pub struct App {
|
||||
pub selected_reaction_index: usize,
|
||||
}
|
||||
|
||||
|
||||
impl App {
|
||||
pub fn new(config: crate::config::Config) -> App {
|
||||
let mut state = ListState::default();
|
||||
@@ -226,13 +225,14 @@ impl App {
|
||||
self.selected_message_index = Some(
|
||||
self.selected_message_index
|
||||
.map(|i| (i + 1).min(total - 1))
|
||||
.unwrap_or(0)
|
||||
.unwrap_or(0),
|
||||
);
|
||||
}
|
||||
|
||||
/// Выбрать следующее сообщение (вниз по списку = уменьшить индекс)
|
||||
pub fn select_next_message(&mut self) {
|
||||
self.selected_message_index = self.selected_message_index
|
||||
self.selected_message_index = self
|
||||
.selected_message_index
|
||||
.map(|i| if i > 0 { Some(i - 1) } else { None })
|
||||
.flatten();
|
||||
}
|
||||
@@ -312,7 +312,8 @@ impl App {
|
||||
pub fn get_filtered_chats(&self) -> Vec<&ChatInfo> {
|
||||
let folder_filtered: Vec<&ChatInfo> = match self.selected_folder_id {
|
||||
None => self.chats.iter().collect(), // All - показываем все
|
||||
Some(folder_id) => self.chats
|
||||
Some(folder_id) => self
|
||||
.chats
|
||||
.iter()
|
||||
.filter(|c| c.folder_ids.contains(&folder_id))
|
||||
.collect(),
|
||||
@@ -410,7 +411,10 @@ impl App {
|
||||
/// Получить сообщение, на которое отвечаем
|
||||
pub fn get_replying_to_message(&self) -> Option<&crate::tdlib::client::MessageInfo> {
|
||||
self.replying_to_message_id.and_then(|id| {
|
||||
self.td_client.current_chat_messages.iter().find(|m| m.id == id)
|
||||
self.td_client
|
||||
.current_chat_messages
|
||||
.iter()
|
||||
.find(|m| m.id == id)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -441,7 +445,10 @@ impl App {
|
||||
/// Получить сообщение для пересылки
|
||||
pub fn get_forwarding_message(&self) -> Option<&crate::tdlib::client::MessageInfo> {
|
||||
self.forwarding_message_id.and_then(|id| {
|
||||
self.td_client.current_chat_messages.iter().find(|m| m.id == id)
|
||||
self.td_client
|
||||
.current_chat_messages
|
||||
.iter()
|
||||
.find(|m| m.id == id)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -470,7 +477,9 @@ impl App {
|
||||
|
||||
/// Выбрать предыдущий pinned (вверх = более старый)
|
||||
pub fn select_previous_pinned(&mut self) {
|
||||
if !self.pinned_messages.is_empty() && self.selected_pinned_index < self.pinned_messages.len() - 1 {
|
||||
if !self.pinned_messages.is_empty()
|
||||
&& self.selected_pinned_index < self.pinned_messages.len() - 1
|
||||
{
|
||||
self.selected_pinned_index += 1;
|
||||
}
|
||||
}
|
||||
@@ -530,8 +539,8 @@ impl App {
|
||||
|
||||
/// Выбрать следующий результат (вниз)
|
||||
pub fn select_next_search_result(&mut self) {
|
||||
if !self.message_search_results.is_empty()
|
||||
&& self.selected_search_result_index < self.message_search_results.len() - 1
|
||||
if !self.message_search_results.is_empty()
|
||||
&& self.selected_search_result_index < self.message_search_results.len() - 1
|
||||
{
|
||||
self.selected_search_result_index += 1;
|
||||
}
|
||||
@@ -539,7 +548,8 @@ impl App {
|
||||
|
||||
/// Получить текущий выбранный результат
|
||||
pub fn get_selected_search_result(&self) -> Option<&crate::tdlib::client::MessageInfo> {
|
||||
self.message_search_results.get(self.selected_search_result_index)
|
||||
self.message_search_results
|
||||
.get(self.selected_search_result_index)
|
||||
}
|
||||
|
||||
/// Получить ID выбранного результата для перехода
|
||||
@@ -629,7 +639,11 @@ impl App {
|
||||
self.is_reaction_picker_mode
|
||||
}
|
||||
|
||||
pub fn enter_reaction_picker_mode(&mut self, message_id: i64, available_reactions: Vec<String>) {
|
||||
pub fn enter_reaction_picker_mode(
|
||||
&mut self,
|
||||
message_id: i64,
|
||||
available_reactions: Vec<String>,
|
||||
) {
|
||||
self.is_reaction_picker_mode = true;
|
||||
self.selected_message_for_reaction = Some(message_id);
|
||||
self.available_reactions = available_reactions;
|
||||
|
||||
Reference in New Issue
Block a user