< Summary

Information
Class: UIBlazor.Components.RecentSessionsPicker
Assembly: UIBlazor
File(s): /home/runner/work/InvAit/InvAit/UIBlazor/Components/RecentSessionsPicker.razor
Tag: 71_26091983037
Line coverage
73%
Covered lines: 19
Uncovered lines: 7
Coverable lines: 26
Total lines: 83
Line coverage: 73%
Branch coverage
83%
Covered branches: 10
Total branches: 12
Branch coverage: 83.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
BuildRenderTree(...)100%66100%
get_ChatService()100%11100%
get_ShowTitle()100%11100%
OnInitializedAsync()100%11100%
LoadSession()100%22100%
DeleteSessionAsync()0%620%

File(s)

/home/runner/work/InvAit/InvAit/UIBlazor/Components/RecentSessionsPicker.razor

#LineLine coverage
 1@inject DialogService DialogService
 2
 343@if (_sessions != null && _sessions.Any())
 4{
 315    @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: 
 2618            @if (ShowTitle)
 19            {
 220                <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">
 524                    <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
 7228                                <RadzenText TextStyle="TextStyle.Caption" class="rz-color-info-light" Style="text-align:
 7229                                <RadzenText TextStyle="TextStyle.Body2" Style="white-space: nowrap; overflow: hidden; te
 30                            </RadzenStack>
 031                            <RadzenButton Icon="delete" ButtonStyle="ButtonStyle.Danger" Variant="Variant.Text" Size="Bu
 32                        </RadzenStack>
 33                    </RadzenCard>
 34                </Template>
 35            </RadzenDataList>
 36        </RadzenStack>
 37    }
 38}
 39else
 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" />
 343        <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
 5351    [Inject] IChatService ChatService { get; set; } = null!;
 52
 3053    [Parameter] public bool ShowTitle { get; set; }
 54
 55    protected override async Task OnInitializedAsync()
 56    {
 2457        _sessions = await ChatService.GetRecentSessionsAsync(5);
 2458    }
 59
 60    private async Task LoadSession(string id)
 61    {
 562        _isLoading = true;
 563        StateHasChanged();
 64
 565        await Task.Yield(); // Даем время на отрисовку спиннера
 66
 567        await ChatService.LoadSessionAsync(id);
 68
 569        _isLoading = false;
 570        DialogService.Close();
 571    }
 72
 73    private async Task DeleteSessionAsync(string id, MouseEventArgs args)
 74    {
 075        var result = await DialogService.Confirm(SharedResource.ConfirmQuestion, SharedResource.DeleteSession);
 076        if (result == true)
 77        {
 078            await ChatService.DeleteSessionAsync(id);
 079            _sessions = await ChatService.GetRecentSessionsAsync(5);
 080            await InvokeAsync(StateHasChanged);
 81        }
 082    }
 83}