Skip to content
This repository was archived by the owner on Jun 1, 2023. It is now read-only.

Commit 953f62b

Browse files
committed
清理屎山 修复bug Fix#65
1 parent dbf1893 commit 953f62b

File tree

5 files changed

+55
-36
lines changed

5 files changed

+55
-36
lines changed

WonderLab/MainWindow.axaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ public async void AppRunAnimaction()
510510
{
511511
await Task.Run(() =>
512512
{
513-
UsersView.ViewModel.GetSaveUserInfo();
513+
UsersView.ViewModel.GetSavedUserInfo();
514514
});
515515
await Task.Delay(2500);
516516
cover.Opacity= 0;

WonderLab/Modules/Models/UserViewDataModels.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ public UserModels(UserDataModels user)
4040
}
4141

4242
public UserModels Current => this;
43-
44-
public string Name { get; set; }
43+
public string _Name;
44+
public string Name { get => _Name; set => _Name = value; }
4545

4646
public string Jvm { get; set; }
4747

WonderLab/ViewModels/UsersViewModel.cs

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using DynamicData;
12
using FluentAvalonia.UI.Controls;
23
using MinecaftOAuth.Authenticator;
34
using System;
@@ -19,6 +20,7 @@ namespace WonderLab.ViewModels
1920
//Binding
2021
public partial class UsersViewModel : ViewModelBase
2122
{
23+
public string UserNameText { get => _UserNameText; set => RaiseAndSetIfChanged(ref _UserNameText, value); }
2224
public string SelectedAuthenticator { get => _SelectedAuthenticator; set => RaiseAndSetIfChanged(ref _SelectedAuthenticator, value); }
2325

2426
public string UrlTextBoxText { get => _UrlTextBoxText; set => RaiseAndSetIfChanged(ref _UrlTextBoxText, value); }
@@ -57,10 +59,10 @@ public partial class UsersViewModel : ViewModelBase
5759
//Methods
5860
partial class UsersViewModel
5961
{
60-
//public UsersViewModel() => GetSaveUserInfo();
6162

6263
public async ValueTask AuthAsync()
6364
{
65+
TextBoxText = string.Empty;
6466
FirstBoxVisibility = false;
6567
PasswordBoxVisibility = false;
6668
TextBoxVisibility = false;
@@ -174,10 +176,11 @@ public async void FindllyAuth()
174176
UserType = "离线账户"
175177
};
176178
App.Data.UserList.Add(user);
179+
Users.Add(new(user));
177180
MainWindow.ShowInfoBarAsync("添加账户成功:", $"{user.UserType} {user.UserName} 欢迎回来,{user.UserName}", InfoBarSeverity.Success);
178181
UsersView.CloseDialog();
179182
}
180-
GetSaveUserInfo();
183+
JsonToolkit.JsonAllWrite();
181184
StringsRefresh();
182185
}
183186

@@ -192,22 +195,13 @@ public void StringsRefresh()
192195
DeviceTips = "";
193196
}
194197

195-
public void GetSaveUserInfo()
198+
public void GetSavedUserInfo()
196199
{
197-
BackgroundWorker worker = new();
198-
worker.DoWork += (_, _) =>
200+
JsonToolkit.JsonAllWrite();
201+
App.Data.UserList.ForEach((x) =>
199202
{
200-
App.Data.UserList.ForEach(async x =>
201-
{
202-
await Task.Run(async () =>
203-
{
204-
Users.Add(new(x));
205-
await Task.Delay(1000);
206-
});
207-
});
208-
};
209-
210-
worker.RunWorkerAsync();
203+
Users.Add(new(x));
204+
});
211205
//CurrentUser = Users.GetUserInIndex(App.Data.SelectedUser.UserName);
212206
}
213207

@@ -225,6 +219,7 @@ partial class UsersViewModel
225219
public bool _PasswordBoxVisibility = false;
226220
public bool _ProgressBarVisibility = false;
227221
public bool _FirstBoxVisibility = false;
222+
public string _UserNameText = string.Empty;
228223
public string _SelectedAuthenticator = "微软验证";
229224
public string _UrlTextBoxText = string.Empty;
230225
public string _TextBoxText = string.Empty;

WonderLab/Views/UsersView.axaml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@
110110
Command="{Binding CopyCodeAsync}"
111111
Classes="accent" Content="将代码复制至剪贴板"/>
112112
<Button Command="{Binding StringsRefresh}"
113-
Width="75" Click="CancelButtonClick1"
113+
Width="75" Click="CancelButtonClick2"
114114
Margin="15,0,0,0">
115115
<TextBlock Text="取消" />
116116
</Button>
@@ -132,7 +132,7 @@
132132
VerticalAlignment="Center"
133133
FontSize="18"
134134
FontWeight="Bold"
135-
Text="Starcloudsea 的账户信息" />
135+
x:Name="UserInfoTitle" />
136136

137137
<Grid HorizontalAlignment="Stretch" Margin="0 10 0 0" Grid.Row="1">
138138
<Grid.ColumnDefinitions>
@@ -187,14 +187,14 @@
187187
<Grid HorizontalAlignment="Stretch" Grid.Row="1" Grid.Column="2">
188188

189189
<StackPanel Margin="0 0 0 10" Spacing="10" Width="350">
190-
<TextBox HorizontalAlignment="Stretch" Watermark="请输入您的游戏名"/>
190+
<TextBox x:Name="NameInputTextBox" HorizontalAlignment="Stretch" Watermark="请输入您的游戏名"/>
191191

192192
<DockPanel Width="350">
193193
<Button DockPanel.Dock="Right" Width="40" VerticalAlignment="Stretch" HorizontalAlignment="Left" Classes="accent">
194194
<ui:SymbolIcon Symbol="Add"/>
195195
</Button>
196196

197-
<TextBox DockPanel.Dock="Left" Margin="0 0 10 0" Width="300" Watermark="请输入您的角色皮肤路径"/>
197+
<TextBox x:Name="SkinFilePath" DockPanel.Dock="Left" Margin="0 0 10 0" Width="300" Watermark="请输入您的角色皮肤路径"/>
198198
</DockPanel>
199199

200200
</StackPanel>
@@ -206,12 +206,15 @@
206206
Orientation="Horizontal">
207207

208208
<Button
209-
Width="100" Click="CancelButtonClick1"
209+
x:Name="DeleteButton"
210+
Width="100" Click="DeleteButtonClick"
210211
Margin="0,0,15,0" Background="Red">
211212
<TextBlock Text="删除此档案" />
212213
</Button>
213214

214215
<Button Width="75"
216+
x:Name="SaveButton"
217+
Click="SaveButtonClick"
215218
Classes="accent" IsVisible="{Binding TextBoxVisibility}"
216219
Foreground="White">
217220
<TextBlock Text="确定" />

WonderLab/Views/UsersView.axaml.cs

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using Avalonia.Threading;
66
using FluentAvalonia.UI.Controls;
77
using System;
8+
using System.Collections.Generic;
89
using System.Diagnostics;
910
using System.Linq;
1011
using System.Threading.Tasks;
@@ -56,7 +57,10 @@ public static void CloseDialog()
5657
private async void ShowUserInfoDialogClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e) {
5758
var Skin = ((sender as Button)!.DataContext as UserModels)!.SkinBytes;
5859
var Data = ((sender as Button)!.DataContext as UserModels)!;
59-
60+
ViewModel.UserNameText = string.Format("{0} 的账户信息", Data.Name);
61+
UserInfoTitle.Text = ViewModel.UserNameText;
62+
DeleteButton.DataContext = Data;
63+
SaveButton.DataContext = Data;
6064
try
6165
{
6266
if (Data.Type.Contains("微软"))
@@ -99,26 +103,43 @@ private async void ShowUserInfoDialogClick(object? sender, Avalonia.Interactivit
99103

100104
private void CancelButtonClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e) => AuthenticatorTypeDialog.Hide();
101105

102-
private void CancelButtonClick1(object? sender, Avalonia.Interactivity.RoutedEventArgs e) => LoginDialog.Hide();
106+
private void CancelButtonClick1(object? sender, Avalonia.Interactivity.RoutedEventArgs e) => UserInfoDialog.Hide();
107+
private void CancelButtonClick2(object? sender, Avalonia.Interactivity.RoutedEventArgs e) => LoginDialog.Hide();
103108

104109
private void DeleteButtonClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
110+
{
111+
var user = (UserModels)(sender as Button).DataContext!;
112+
113+
App.Data.UserList.RemoveAll((x) => x.UserUuid == user.Uuid && x.UserName == user.Name && x.UserType == user.Type);
114+
115+
List<UserModels> tmp = new(ViewModel.Users);
116+
tmp.RemoveAll((x) => x.Uuid == user.Uuid && x.Name == user.Name && x.Type == user.Type);
117+
ViewModel.Users = new(tmp);
118+
if (App.Data.SelectedUser is not null && App.Data.SelectedUser.UserName.Equals(user.Name) && App.Data.SelectedUser.UserUuid.Equals(user.Uuid))
119+
App.Data.SelectedUser = null;
120+
JsonToolkit.JsonAllWrite();
121+
UserInfoDialog.Hide();
122+
MainWindow.ShowInfoBarAsync("成功:",$"账户 {user.Name} 已成功被移除!", InfoBarSeverity.Success);
123+
}
124+
private void SaveButtonClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
105125
{
106126
var user = (UserModels)(sender as Button).DataContext!;
107127

108-
for (int i = 0; i < App.Data.UserList.Count; i++)
128+
List<UserModels> tmp = new(ViewModel.Users);
129+
tmp.RemoveAll((x) => x.Uuid == user.Uuid && x.Name == user.Name && x.Type == user.Type);
130+
ViewModel.Users = new(tmp);
131+
if (NameInputTextBox.Text != null)
109132
{
110-
if (ViewModel.Users[i].Name == App.Data.UserList[i].UserName && ViewModel.Users[i].Uuid == App.Data.UserList[i].UserUuid)
111-
App.Data.UserList.Remove(App.Data.UserList[i]);
133+
user.Name = NameInputTextBox.Text;
112134
}
135+
ViewModel.Users.Add(user);
136+
App.Data.UserList.Find((x)=> {
137+
return x.UserName == user.Name && x.UserUuid == user.Uuid && x.UserType == user.Type;
113138

114-
ViewModel.Users.Remove(user.Current);
115-
var temp = ViewModel.Users;
116-
ViewModel.Users = null;
117-
ViewModel.Users = new(temp);
118-
if (App.Data.SelectedUser is not null && App.Data.SelectedUser.UserName.Equals(user.Name) && App.Data.SelectedUser.UserUuid.Equals(user.Uuid))
119-
App.Data.SelectedUser = null;
139+
}).UserName = user.Name;
120140

121-
MainWindow.ShowInfoBarAsync("成功:",$"账户 {user.Name} 已成功被移除!", InfoBarSeverity.Success);
141+
JsonToolkit.JsonAllWrite();
142+
UserInfoDialog.Hide();
122143
}
123144

124145
private async void UserSettingOpenPointerPressed(object? sender, Avalonia.Input.PointerPressedEventArgs e)

0 commit comments

Comments
 (0)