| | | 1 | | @inject DialogService DialogService |
| | | 2 | | |
| | 34 | 3 | | @if (_sessions != null && _sessions.Any()) |
| | | 4 | | { |
| | 31 | 5 | | @if (_isLoading) |
| | | 6 | | { |
| | | 7 | | <RadzenStack class="rz-chat-empty" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.Center" Gap="1r |
| | | 8 | | <RadzenProgressBarCircular |
| | | 9 | | Mode="ProgressBarMode.Indeterminate" |
| | | 10 | | Size="ProgressBarCircularSize.Large" |
| | | 11 | | ShowValue="false" /> |
| | | 12 | | <RadzenLabel Text="@SharedResource.Loading" /> |
| | | 13 | | </RadzenStack> |
| | | 14 | | } |
| | | 15 | | else |
| | | 16 | | { |
| | | 17 | | <RadzenStack AlignItems="AlignItems.Center" JustifyContent="JustifyContent.Center" Gap="1rem" Style="max-width: |
| | 26 | 18 | | @if (ShowTitle) |
| | | 19 | | { |
| | 2 | 20 | | <RadzenText TextStyle="TextStyle.H6" class="rz-text-secondary-color">@SharedResource.SessionsTitle</Radz |
| | | 21 | | } |
| | | 22 | | <RadzenDataList Data="@_sessions" TItem="SessionSummary" Count="@_sessions.Count" WrapItems="true"> |
| | | 23 | | <Template Context="session"> |
| | 5 | 24 | | <RadzenCard class="rz-p-2 rz-w-100" Style="cursor: pointer;" @onclick="() => LoadSession(session.Id) |
| | | 25 | | <RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" JustifyContent= |
| | | 26 | | <RadzenIcon Icon="chat_bubble_outline" class="rz-text-tertiary-color" /> |
| | | 27 | | <RadzenStack Orientation="Orientation.Vertical" Gap="0.2rem" Style="flex: 1; overflow: hidde |
| | 72 | 28 | | <RadzenText TextStyle="TextStyle.Caption" class="rz-color-info-light" Style="text-align: |
| | 72 | 29 | | <RadzenText TextStyle="TextStyle.Body2" Style="white-space: nowrap; overflow: hidden; te |
| | | 30 | | </RadzenStack> |
| | 0 | 31 | | <RadzenButton Icon="delete" ButtonStyle="ButtonStyle.Danger" Variant="Variant.Text" Size="Bu |
| | | 32 | | </RadzenStack> |
| | | 33 | | </RadzenCard> |
| | | 34 | | </Template> |
| | | 35 | | </RadzenDataList> |
| | | 36 | | </RadzenStack> |
| | | 37 | | } |
| | | 38 | | } |
| | | 39 | | else |
| | | 40 | | { |
| | | 41 | | <RadzenStack class="rz-chat-empty" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.Center" Gap="1rem"> |
| | | 42 | | <RadzenIcon Icon="chat_bubble_outline" class="rz-text-secondary-color" /> |
| | 3 | 43 | | <RadzenText TextStyle="TextStyle.Body2" class="rz-mt-2 rz-text-tertiary-color">@SharedResource.EmptyMessage</Rad |
| | | 44 | | </RadzenStack> |
| | | 45 | | } |
| | | 46 | | |
| | | 47 | | @code { |
| | | 48 | | private List<SessionSummary>? _sessions; |
| | | 49 | | private bool _isLoading; |
| | | 50 | | |
| | 53 | 51 | | [Inject] IChatService ChatService { get; set; } = null!; |
| | | 52 | | |
| | 30 | 53 | | [Parameter] public bool ShowTitle { get; set; } |
| | | 54 | | |
| | | 55 | | protected override async Task OnInitializedAsync() |
| | | 56 | | { |
| | 24 | 57 | | _sessions = await ChatService.GetRecentSessionsAsync(5); |
| | 24 | 58 | | } |
| | | 59 | | |
| | | 60 | | private async Task LoadSession(string id) |
| | | 61 | | { |
| | 5 | 62 | | _isLoading = true; |
| | 5 | 63 | | StateHasChanged(); |
| | | 64 | | |
| | 5 | 65 | | await Task.Yield(); // Даем время на отрисовку спиннера |
| | | 66 | | |
| | 5 | 67 | | await ChatService.LoadSessionAsync(id); |
| | | 68 | | |
| | 5 | 69 | | _isLoading = false; |
| | 5 | 70 | | DialogService.Close(); |
| | 5 | 71 | | } |
| | | 72 | | |
| | | 73 | | private async Task DeleteSessionAsync(string id, MouseEventArgs args) |
| | | 74 | | { |
| | 0 | 75 | | var result = await DialogService.Confirm(SharedResource.ConfirmQuestion, SharedResource.DeleteSession); |
| | 0 | 76 | | if (result == true) |
| | | 77 | | { |
| | 0 | 78 | | await ChatService.DeleteSessionAsync(id); |
| | 0 | 79 | | _sessions = await ChatService.GetRecentSessionsAsync(5); |
| | 0 | 80 | | await InvokeAsync(StateHasChanged); |
| | | 81 | | } |
| | 0 | 82 | | } |
| | | 83 | | } |