在 `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` 为空的检查。
112 lines
3.3 KiB
C#
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();
|
|
}
|
|
}
|