97 lines
3.0 KiB
Plaintext
97 lines
3.0 KiB
Plaintext
@page "/"
|
|
@using Frontend.Models
|
|
@using Katheryne.Abstractions
|
|
@inject IChatRobotFactory ChatRobotFactory
|
|
|
|
|
|
<Layout>
|
|
<Sider Width="200">
|
|
<div class="chat-control-zone">
|
|
<div>
|
|
<Button Type="@ButtonType.Primary" Size="large" @onclick="@CreateChatClicked">
|
|
新建对话
|
|
</Button>
|
|
|
|
<div class="chat-list">
|
|
<AntList TItem="@Chat" DataSource="@_chatDictionary.Values"
|
|
Split="@false">
|
|
<ListItem OnClick="@(() => ChangeChatClicked(context.Guid))">
|
|
<ListItemMeta>
|
|
<TitleTemplate>
|
|
@if (context.Selected)
|
|
{
|
|
<div class="selected-chat-name">
|
|
<p style="margin: 5px">@context.Title</p>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="chat-name">
|
|
<p style="margin: 5px">@context.Title</p>
|
|
</div>
|
|
}
|
|
</TitleTemplate>
|
|
</ListItemMeta>
|
|
</ListItem>
|
|
</AntList>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</Sider>
|
|
|
|
<Content>
|
|
<ChatZone Messages="@_chatDictionary[_currentGuid].Messages" Robot="@_chatDictionary[_currentGuid].Robot"/>
|
|
</Content>
|
|
</Layout>
|
|
|
|
@code {
|
|
private readonly Dictionary<Guid, Chat> _chatDictionary = new();
|
|
|
|
private Guid _currentGuid;
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
Chat chat = GetInitChat();
|
|
_chatDictionary.Add(chat.Guid, chat);
|
|
_currentGuid = chat.Guid;
|
|
}
|
|
|
|
private void CreateChatClicked()
|
|
{
|
|
Chat chat = GetInitChat();
|
|
|
|
_chatDictionary.Add(chat.Guid, chat);
|
|
_chatDictionary[_currentGuid].Selected = false;
|
|
_currentGuid = chat.Guid;
|
|
_chatDictionary[_currentGuid].Selected = true;
|
|
}
|
|
|
|
private void ChangeChatClicked(Guid guid)
|
|
{
|
|
_chatDictionary[_currentGuid].Selected = false;
|
|
_currentGuid = guid;
|
|
_chatDictionary[_currentGuid].Selected = true;
|
|
}
|
|
|
|
private Chat GetInitChat()
|
|
{
|
|
var chat = new Chat
|
|
{
|
|
Title = $"对话:{_chatDictionary.Count + 1}",
|
|
Robot = ChatRobotFactory.GetRobot()
|
|
};
|
|
|
|
foreach (string answer in chat.Robot.OnChatStart())
|
|
{
|
|
chat.Messages.Add(new ChatMessage
|
|
{
|
|
Sender = chat.Robot.RobotName,
|
|
Left = true,
|
|
Text = answer
|
|
});
|
|
}
|
|
chat.Selected = true;
|
|
|
|
return chat;
|
|
}
|
|
} |