diff --git a/src/TelegramPanel.Web/Components/Pages/ChannelCreate.razor b/src/TelegramPanel.Web/Components/Pages/ChannelCreate.razor new file mode 100644 index 0000000..822de52 --- /dev/null +++ b/src/TelegramPanel.Web/Components/Pages/ChannelCreate.razor @@ -0,0 +1,124 @@ +@page "/channels/create" +@inject IChannelService ChannelService +@inject ISnackbar Snackbar +@inject NavigationManager Navigation + +创建频道 - Telegram Panel + +创建频道 + + + + + + + -- 请选择账号 -- + 账号1 (+86xxxxxxxx) + 账号2 (+86yyyyyyyy) + + + + + + + + + @if (isPublic) + { + + } + + + + 可选设置 + + + + + + + 取消 + + + @if (creating) + { + + 创建中... + } + else + { + 创建频道 + } + + + + + + +@code { + private int selectedAccountId = 0; + private string channelTitle = ""; + private string channelAbout = ""; + private bool isPublic = false; + private string username = ""; + private bool enableComments = true; + private bool enableReactions = true; + private bool signMessages = false; + private bool creating = false; + + private async Task CreateChannel() + { + if (selectedAccountId == 0) + { + Snackbar.Add("请选择账号", Severity.Error); + return; + } + + if (string.IsNullOrEmpty(channelTitle)) + { + Snackbar.Add("请输入频道名称", Severity.Error); + return; + } + + if (isPublic && string.IsNullOrEmpty(username)) + { + Snackbar.Add("公开频道需要设置用户名", Severity.Error); + return; + } + + creating = true; + + try + { + var channelInfo = await ChannelService.CreateChannelAsync(selectedAccountId, channelTitle, channelAbout, isPublic); + + if (isPublic && !string.IsNullOrEmpty(username)) + { + await ChannelService.SetChannelVisibilityAsync(selectedAccountId, channelInfo.TelegramId, true, username); + } + + Snackbar.Add($"频道 \"{channelTitle}\" 创建成功", Severity.Success); + Navigation.NavigateTo("/channels"); + } + catch (Exception ex) + { + Snackbar.Add($"创建失败:{ex.Message}", Severity.Error); + } + finally + { + creating = false; + } + } + + private void Cancel() + { + Navigation.NavigateTo("/channels"); + } +}