Forge
csharpdeeb25a2
1using System.Collections.ObjectModel;
2using CascadeIDE.Models.AgentChat;
3using CommunityToolkit.Mvvm.ComponentModel;
4
5namespace CascadeIDE.Features.Chat;
6
7/// <summary>Черновой ответ пользователя на один пункт пакета уточнений.</summary>
8public sealed partial class ClarificationDraftItemViewModel : ObservableObject
9{
10 public ClarificationDraftItemViewModel(ClarificationItem item)
11 {
12 Id = item.Id;
13 Prompt = item.Prompt;
14 AnswerStyle = item.AnswerStyle;
15 ChoiceOptions = BuildChoiceOptions(item);
16 }
17
18 public string Id { get; }
19
20 public string Prompt { get; }
21
22 public ClarificationAnswerStyle AnswerStyle { get; }
23
24 public ObservableCollection<string> ChoiceOptions { get; }
25
26 public bool IsFreeText => AnswerStyle == ClarificationAnswerStyle.FreeText;
27
28 public bool IsChoice => AnswerStyle is ClarificationAnswerStyle.SingleChoice or ClarificationAnswerStyle.YesNo;
29
30 [ObservableProperty]
31 private string _answer = "";
32
33 private static ObservableCollection<string> BuildChoiceOptions(ClarificationItem item)
34 {
35 if (item.AnswerStyle == ClarificationAnswerStyle.YesNo)
36 return ["Да", "Нет"];
37
38 var values = item.ChoiceOptions ?? [];
39 return [.. values.Where(x => !string.IsNullOrWhiteSpace(x)).Select(x => x.Trim())];
40 }
41}
42
View only · write via MCP/CIDE