mirror of
https://github.com/moeacgx/Telegram-Panel.git
synced 2026-07-02 01:34:33 +08:00
127 lines
4.2 KiB
Plaintext
127 lines
4.2 KiB
Plaintext
@inherits LayoutComponentBase
|
|
|
|
<MudThemeProvider @bind-IsDarkMode="_isDarkMode" Theme="_theme" />
|
|
<MudPopoverProvider />
|
|
<MudDialogProvider />
|
|
<MudSnackbarProvider />
|
|
|
|
<MudLayout>
|
|
<MudAppBar Elevation="1">
|
|
<MudIconButton Icon="@Icons.Material.Filled.Menu" Color="Color.Inherit" Edge="Edge.Start" OnClick="@ToggleDrawer" />
|
|
<MudText Typo="Typo.h5" Class="ml-3">Telegram Panel</MudText>
|
|
<MudChip T="string" Size="Size.Small" Color="Color.Default" Class="ml-2" Style="cursor: pointer;"
|
|
title="点击查看版本信息" OnClick="@ShowVersionInfo">
|
|
@VersionService.Version
|
|
</MudChip>
|
|
@if (_updateInfo is { Success: true, UpdateAvailable: true } && !string.IsNullOrWhiteSpace(_updateInfo.LatestVersion))
|
|
{
|
|
<MudChip T="string" Size="Size.Small" Color="Color.Warning" Variant="Variant.Filled" Class="ml-2" Style="cursor: pointer;"
|
|
title="发现新版本,点击查看更新说明" OnClick="@ShowVersionInfo">
|
|
新版本 v@(_updateInfo.LatestVersion)
|
|
</MudChip>
|
|
}
|
|
<MudSpacer />
|
|
<MudIconButton Icon="@Icons.Material.Filled.Settings"
|
|
Color="Color.Inherit"
|
|
Href="/settings"
|
|
title="系统设置" />
|
|
<MudIconButton Icon="@Icons.Custom.Brands.GitHub"
|
|
Color="Color.Inherit"
|
|
Href="https://github.com/moeacgx/Telegram-Panel"
|
|
Target="_blank"
|
|
Rel="noopener noreferrer"
|
|
title="GitHub" />
|
|
<MudIconButton Icon="@(_isDarkMode ? Icons.Material.Filled.LightMode : Icons.Material.Filled.DarkMode)"
|
|
Color="Color.Inherit"
|
|
OnClick="@ToggleDarkMode" />
|
|
</MudAppBar>
|
|
|
|
<MudDrawer @bind-Open="_drawerOpen" ClipMode="DrawerClipMode.Always" Elevation="2">
|
|
<NavMenu />
|
|
</MudDrawer>
|
|
|
|
<MudMainContent Class="pt-16 px-4">
|
|
<MudContainer MaxWidth="MaxWidth.ExtraLarge" Class="my-4">
|
|
@Body
|
|
</MudContainer>
|
|
</MudMainContent>
|
|
</MudLayout>
|
|
|
|
@using TelegramPanel.Web.Services
|
|
@inject UiPreferencesService UiPreferences
|
|
@inject IDialogService DialogService
|
|
@inject UpdateCheckService UpdateCheck
|
|
|
|
@code {
|
|
private bool _drawerOpen = true;
|
|
private bool _isDarkMode = true;
|
|
private UpdateCheckInfo? _updateInfo;
|
|
|
|
private MudTheme _theme = new()
|
|
{
|
|
PaletteLight = new PaletteLight
|
|
{
|
|
Primary = "#1976d2",
|
|
Secondary = "#00bcd4",
|
|
AppbarBackground = "#1976d2"
|
|
},
|
|
PaletteDark = new PaletteDark
|
|
{
|
|
Primary = "#90caf9",
|
|
Secondary = "#80deea",
|
|
AppbarBackground = "#1e1e2d",
|
|
Background = "#121212",
|
|
Surface = "#1e1e2d"
|
|
}
|
|
};
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
// 从配置文件读取用户的主题偏好
|
|
_isDarkMode = await UiPreferences.GetIsDarkModeAsync();
|
|
_ = LoadUpdateInfoAsync();
|
|
// 确保初始化后 UI 能正确显示主题
|
|
StateHasChanged();
|
|
}
|
|
|
|
private void ToggleDrawer()
|
|
{
|
|
_drawerOpen = !_drawerOpen;
|
|
}
|
|
|
|
private async Task ToggleDarkMode()
|
|
{
|
|
_isDarkMode = !_isDarkMode;
|
|
// 保存主题偏好到配置文件
|
|
await UiPreferences.SetIsDarkModeAsync(_isDarkMode);
|
|
// 强制刷新组件状态,确保在异步操作后 UI 能及时更新
|
|
StateHasChanged();
|
|
}
|
|
|
|
private async Task ShowVersionInfo()
|
|
{
|
|
var options = new DialogOptions
|
|
{
|
|
CloseOnEscapeKey = true,
|
|
MaxWidth = MaxWidth.Medium,
|
|
FullWidth = true
|
|
};
|
|
|
|
DialogService.Show<TelegramPanel.Web.Components.Dialogs.VersionInfoDialog>("版本信息", new DialogParameters(), options);
|
|
await Task.CompletedTask;
|
|
}
|
|
|
|
private async Task LoadUpdateInfoAsync()
|
|
{
|
|
try
|
|
{
|
|
_updateInfo = await UpdateCheck.GetLatestAsync(forceRefresh: false);
|
|
await InvokeAsync(StateHasChanged);
|
|
}
|
|
catch
|
|
{
|
|
// 检查更新失败不影响主界面
|
|
}
|
|
}
|
|
}
|