add typings in/out

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Mikhail Kilin
2026-01-27 03:59:49 +03:00
parent 46720b3584
commit 4d5625f950
6 changed files with 138 additions and 14 deletions

View File

@@ -328,18 +328,40 @@ pub fn render(f: &mut Frame, area: Rect, app: &App) {
])
.split(area);
// Chat header
let header_text = match &chat.username {
Some(username) => format!("👤 {} {}", chat.title, username),
None => format!("👤 {}", chat.title),
// Chat header с typing status
let typing_action = app.td_client.typing_status.as_ref().map(|(_, action, _)| action.clone());
let header_line = if let Some(action) = typing_action {
// Показываем typing status: "👤 Имя @username печатает..."
let mut spans = vec![
Span::styled(
format!("👤 {}", chat.title),
Style::default().fg(Color::Cyan).add_modifier(Modifier::BOLD),
),
];
if let Some(username) = &chat.username {
spans.push(Span::styled(
format!(" {}", username),
Style::default().fg(Color::Gray),
));
}
spans.push(Span::styled(
format!(" {}", action),
Style::default().fg(Color::Yellow).add_modifier(Modifier::ITALIC),
));
Line::from(spans)
} else {
// Показываем username
let header_text = match &chat.username {
Some(username) => format!("👤 {} {}", chat.title, username),
None => format!("👤 {}", chat.title),
};
Line::from(Span::styled(
header_text,
Style::default().fg(Color::Cyan).add_modifier(Modifier::BOLD),
))
};
let header = Paragraph::new(header_text)
.block(Block::default().borders(Borders::ALL))
.style(
Style::default()
.fg(Color::Cyan)
.add_modifier(Modifier::BOLD),
);
let header = Paragraph::new(header_line)
.block(Block::default().borders(Borders::ALL));
f.render_widget(header, message_chunks[0]);
// Ширина области сообщений (без рамок)