68 lines
2.0 KiB
C#
68 lines
2.0 KiB
C#
using System;
|
||
using System.Threading.Tasks;
|
||
using Microsoft.UI.Xaml;
|
||
using Microsoft.UI.Xaml.Controls;
|
||
using Microsoft.UI.Xaml.Media;
|
||
using Windows.System;
|
||
using EveryPublish.Client.Services;
|
||
|
||
namespace EveryPublish.Client.Pages;
|
||
|
||
public sealed partial class StatusPage : Page
|
||
{
|
||
private ClientContext _ctx = null!;
|
||
private DispatcherTimer? _timer;
|
||
|
||
public StatusPage()
|
||
{
|
||
InitializeComponent();
|
||
_timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(3) };
|
||
_timer.Tick += async (s, e) => await RefreshAsync();
|
||
}
|
||
|
||
protected override void OnNavigatedTo(NavigationEventArgs e)
|
||
{
|
||
_ctx = (ClientContext)e.Parameter;
|
||
_ctx.Core.ReloadLocalJson();
|
||
_timer?.Start();
|
||
_ = RefreshAsync();
|
||
}
|
||
|
||
protected override void OnNavigatedFrom(NavigationEventArgs e)
|
||
{
|
||
_timer?.Stop();
|
||
}
|
||
|
||
private async Task RefreshAsync()
|
||
{
|
||
_ctx.Core.ReloadLocalJson();
|
||
var status = await _ctx.Core.GetStatusAsync();
|
||
if (status == null)
|
||
{
|
||
OnlineText.Text = "核心进程未就绪";
|
||
OnlineDot.Fill = new SolidColorBrush(Microsoft.UI.Colors.Gray);
|
||
return;
|
||
}
|
||
ServerText.Text = status.Server;
|
||
DeviceText.Text = status.DeviceId > 0 ? "#" + status.DeviceId + "(" + status.Name + ")" : "未配对";
|
||
SessionText.Text = status.Session;
|
||
if (status.Online)
|
||
{
|
||
OnlineText.Text = "在线";
|
||
OnlineDot.Fill = new SolidColorBrush(Microsoft.UI.Colors.LimeGreen);
|
||
}
|
||
else
|
||
{
|
||
OnlineText.Text = status.DeviceId > 0 ? "离线(自动重连中)" : "未配对";
|
||
OnlineDot.Fill = new SolidColorBrush(Microsoft.UI.Colors.Orange);
|
||
}
|
||
}
|
||
|
||
private async void OpenWeb_Click(object sender, RoutedEventArgs e)
|
||
{
|
||
var status = await _ctx.Core.GetStatusAsync();
|
||
var url = status?.Server ?? "http://127.0.0.1:8090";
|
||
await Launcher.LaunchUriAsync(new Uri(url));
|
||
}
|
||
}
|