using System.Net.Http.Json; using System.Security.Principal; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Media; using Microsoft.UI.Xaml.Media.Imaging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using RustTools.DataList; using RustTools.muqing; using RustTools.Themes; using RustTools.ViewModels; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. namespace RustTools.Views; /// /// An empty page that can be used on its own or navigated to within a Frame. /// public sealed partial class UserPage : Page { public UserSpaceInfo.UserData userInfo { get; set; } = new(); public UserViewModel UserViewModel { get; set; } public UserPage() { UserViewModel = App.GetService(); InitializeComponent(); Init(); } private async void Init() { var iniHelper = new IniHelper(); iniHelper.Load(IniHelper.FILE.User); var account = iniHelper.GetValue(IniHelper.CODE.User, IniHelper.KEY.account); var token = iniHelper.GetValue(IniHelper.CODE.User, IniHelper.KEY.token); try { var v = await ApiFox.user.loginPc(account, token); var userSpaceInfo = JsonConvert.DeserializeObject(v); //未登录 if (userSpaceInfo.Code == 0) { nulllogin(); } else { await login(account); } } catch { nulllogin(); } } private void nulllogin() { gridview.Visibility = Microsoft.UI.Xaml.Visibility.Collapsed; var loginPage = new LoginPage(); loginPage.LoginSucceeded += LoginPage_LoginSucceeded; view.Children.Add(loginPage); } private async void LoginPage_LoginSucceeded(object sender, string account) { // 登录成功后,从 Grid 中移除 LoginPage view.Children.Remove((LoginPage)sender); await login(account); } private async Task login(string account) { var v = await ApiFox.user.SpaceInfo(account); var userSpaceInfo = JsonConvert.DeserializeObject(v); if (userSpaceInfo != null && userSpaceInfo.Code == 0) { var data = userSpaceInfo.Data; if (data == null) { return; } data.HeadIcon=data.HeadIcon == string.Empty ? "/Assets/tool.png" : data.HeadIcon.Replace("..", wl.api); userInfo = data; DataContext = this; } gridview.Visibility = Microsoft.UI.Xaml.Visibility.Visible; } private void MenuFlyoutItemLogout_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs e) { var iniHelper = new IniHelper(IniHelper.FILE.User); iniHelper.Clean(); iniHelper.Save(); nulllogin(); } }