WIn_RustTools/Views/UserPage.xaml.cs
muqing 7deaa65c39 更新引用和事件处理,移除 ButtonViewModel 类
在 `EditorWin.xaml.cs` 中:
- 添加了 `System.Text.Encodings.Web` 和 `System.Text.Json` 的引用。
- 在 `TreeView_AddTabItem` 方法中,添加了对 `title` 为空的检查。
- 将 `UpdateUI` 事件替换为 `SavePointLeft` 事件。
- 将 `KeyDown` 事件替换为 `PreviewKeyDown` 事件。
- 添加了对 `Ctrl + Alt + L` 快捷键的处理,用于格式化 JSON 文本。

在 `RustTools.csproj` 中:
- 更新了多个包的版本,包括 `CommunityToolkit.Mvvm`、`Microsoft.Extensions.Hosting`、`Microsoft.WindowsAppSDK`、`System.Management` 和 `WinUIEx`。
- 移除了 `Microsoft.Windows.CsWinRT` 包的引用。
- 添加了 `CommunityToolkit.WinUI.Controls.Sizers` 包的引用。

在 `ButtonViewModel.cs` 中:
- 移除了 `ButtonViewModel` 类及其内容。

在 `RankingViewModel.cs` 中:
- 在 `RankingList` 为空时,添加了对 `modData` 和 `modData.Data` 为空的检查。
- 更新了 `item.Icon` 的替换逻辑。

在 `UserPage.xaml.cs` 中:
- 在用户登录逻辑中,添加了对 `userSpaceInfo` 为空的检查。
2025-01-24 20:01:29 +08:00

112 lines
3.3 KiB
C#

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;
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class UserPage : Page
{
public UserSpaceInfo.UserData userInfo { get; set; } = new();
public UserViewModel UserViewModel
{
get; set;
}
public UserPage()
{
UserViewModel = App.GetService<UserViewModel>();
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<UserSpaceInfo>(v);
//δµÇ¼
if (userSpaceInfo==null || userSpaceInfo.Code == 0)
{
nulllogin();
}
else
{
//nulllogin();
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);
}
/// <summary>
/// µÇ½³É¹¦
/// </summary>
/// <param name="sender"></param>
/// <param name="account"></param>
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<UserSpaceInfo>(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;
}
/// <summary>
/// Í˳öµÇ½
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MenuFlyoutItemLogout_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
{
var iniHelper = new IniHelper(IniHelper.FILE.User);
iniHelper.SetValue(IniHelper.CODE.User, IniHelper.KEY.token, "");
iniHelper.Save();
nulllogin();
}
}