Forge
csharpdeeb25a2
1#nullable enable
2
3namespace CascadeIDE.Features.Chat;
4
5public partial class ChatPanelViewModel
6{
7 public Action<string, string>? ShowMarkdownPreview { get; set; }
8
9 public bool TryGetMessageContent(int messageIndex, out string content)
10 {
11 content = "";
12 if (messageIndex < 0 || messageIndex >= ChatMessages.Count)
13 return false;
14
15 content = ChatMessages[messageIndex].Content ?? "";
16 return !string.IsNullOrWhiteSpace(content);
17 }
18
19 public void OpenMessageMarkdownPreview(int messageIndex)
20 {
21 if (!TryGetMessageContent(messageIndex, out var body))
22 return;
23
24 var role = messageIndex >= 0 && messageIndex < ChatMessages.Count
25 ? ChatMessages[messageIndex].Role
26 : "message";
27 var title = role switch
28 {
29 "user" => "Сообщение · Ты",
30 "assistant" => "Сообщение · Агент",
31 _ => $"Сообщение · {role}",
32 };
33 ShowMarkdownPreview?.Invoke(title, body);
34 }
35}
36
View only · write via MCP/CIDE