Skip to content

Commit

Permalink
improve some method
Browse files Browse the repository at this point in the history
  • Loading branch information
Scighost committed Jun 26, 2022
1 parent ecc4aac commit 48c07d8
Show file tree
Hide file tree
Showing 7 changed files with 123 additions and 81 deletions.
54 changes: 41 additions & 13 deletions Xunkong.Widget/MainPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,19 +37,14 @@ private void OnPropertyChanged([CallerMemberName] string propertyName = "")
private readonly HoyolabService _hoyolabService;


private ObservableCollection<UserInfo> _UserInfos;
private ObservableCollection<UserInfo> _UserInfos = new();
public ObservableCollection<UserInfo> UserInfos
{
get { return _UserInfos; }
set
{
_UserInfos = value;
OnPropertyChanged();
if (value?.Any() ?? false)
{
Image_Splash.Visibility = Visibility.Collapsed;
TextBlock_NoUserInfo.Visibility = Visibility.Collapsed;
}
}
}

Expand All @@ -59,10 +54,18 @@ public MainPage()
this.InitializeComponent();
InitializeTitleBar();
_hoyolabService = new HoyolabService();
_UserInfos.CollectionChanged += _UserInfos_CollectionChanged;
this.Loaded += MainPage_Loaded;
}


private void _UserInfos_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (_UserInfos.Any())
{
Image_Splash.Visibility = Visibility.Collapsed;
TextBlock_NoUserInfo.Visibility = Visibility.Collapsed;
}
}

private void InitializeTitleBar()
{
Expand Down Expand Up @@ -106,12 +109,21 @@ private async void MainPage_Loaded(object sender, RoutedEventArgs e)
GridView_UserInfo.Focus(FocusState.Pointer);
try
{
bool cleared = false;
if (!_hoyolabService.AnyUserInfo())
{
TextBlock_NoUserInfo.Visibility = Visibility.Visible;
return;
}
await foreach (var item in _hoyolabService.GetAllUserInfosAsync())
{
if (!cleared)
{
UserInfos.Clear();
cleared = true;
}
UserInfos.Add(item);
}
var userInfos = await _hoyolabService.GetAllUserInfosAsync();
UserInfos = new ObservableCollection<UserInfo>(userInfos);
await _hoyolabService.UpdateUserInfosAsync();
}
catch (Exception ex)
Expand Down Expand Up @@ -167,8 +179,16 @@ private async void Button_Add_Click(object sender, RoutedEventArgs e)
try
{
await _hoyolabService.AddUserInfosAsync(cookie);
var users = await _hoyolabService.GetAllUserInfosAsync();
UserInfos = new ObservableCollection<UserInfo>(users);
bool cleared = false;
await foreach (var item in _hoyolabService.GetAllUserInfosAsync())
{
if (!cleared)
{
UserInfos.Clear();
cleared = true;
}
UserInfos.Add(item);
}
}
catch (Exception ex)
{
Expand All @@ -182,8 +202,16 @@ private async void Button_Refresh_Click(object sender, RoutedEventArgs e)
try
{
await _hoyolabService.UpdateUserInfosAsync();
var users = await _hoyolabService.GetAllUserInfosAsync();
UserInfos = new ObservableCollection<UserInfo>(users);
bool cleared = false;
await foreach (var item in _hoyolabService.GetAllUserInfosAsync())
{
if (!cleared)
{
UserInfos.Clear();
cleared = true;
}
UserInfos.Add(item);
}
}
catch (Exception ex)
{
Expand Down
2 changes: 1 addition & 1 deletion Xunkong.Widget/Package.appxmanifest
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<Identity
Name="Xunkong.Widget"
Publisher="CN=Xunkong by Scighost"
Version="0.2.1.0" />
Version="0.2.2.0" />

<mp:PhoneIdentity PhoneProductId="1706ff10-7f34-4653-9869-999a2c2f4527" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>

Expand Down
5 changes: 0 additions & 5 deletions Xunkong.Widget/Services/DatabaseService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,12 @@ static DatabaseService()

private static void Initialize()
{
//if (!File.Exists(_dbPath))
//{
// File.Create(_dbPath).Dispose();
//}
using (var db = new SqliteConnection(_dbConnectionString))
{
db.Open();
var command_init = new SqliteCommand(TableStructure_Initial, db);
command_init.ExecuteNonQuery();
var command_queryVersion = new SqliteCommand("SELECT Value FROM DatabaseVersion WHERE Key='DatabaseVersion' LIMIT 1;", db);
//var scl = command_queryVersion.ExecuteScalar();
int.TryParse(command_queryVersion.ExecuteScalar() as string, out int version);
if (version < DATABASE_VERSION)
{
Expand Down
84 changes: 45 additions & 39 deletions Xunkong.Widget/Services/DatabaseSql.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,57 +22,63 @@ public static List<string> GetUpdatingSqls(int currentVersion)
public static string InsertHoyolabUserInfo(HoyolabUserInfo info)
{
var h = info;
return "INSERT OR REPLACE INTO HoyolabUserInfo (Uid, Nickname, Introduce, AvatarUrl, Pendant, Cookie) VALUES" + " " +
$"({h.Uid}, '{h.Nickname}', '{h.Introduce}', '{h.AvatarUrl}', '{h.Pendant}', '{h.Cookie}');";
return $"""
INSERT OR REPLACE INTO HoyolabUserInfo (Uid, Nickname, Introduce, AvatarUrl, Pendant, Cookie) VALUES
({h.Uid}, '{h.Nickname}', '{h.Introduce}', '{h.AvatarUrl}', '{h.Pendant}', '{h.Cookie}');
""";
}



public static string InsertGenshinRoleInfo(GenshinRoleInfo info)
{
var h = info;
return "INSERT OR REPLACE INTO GenshinRoleInfo (Uid, Region, Nickname, Level, RegionName, Cookie) VALUES" + " " +
$"({h.Uid}, {(int)h.Region}, '{h.Nickname}', {h.Level}, '{h.RegionName}', '{h.Cookie}');";
return $"""
INSERT OR REPLACE INTO GenshinRoleInfo (Uid, Region, Nickname, Level, RegionName, Cookie) VALUES
({h.Uid}, {(int)h.Region}, '{h.Nickname}', {h.Level}, '{h.RegionName}', '{h.Cookie}');
""";
}




public const string TableStructure_Initial = @"
CREATE TABLE IF NOT EXISTS DatabaseVersion
(
Key TEXT NOT NULL PRIMARY KEY,
Value TEXT
);";


private const string TableStructure_1 = @"
BEGIN TRANSACTION;
CREATE TABLE IF NOT EXISTS Setting
(
Key TEXT NOT NULL PRIMARY KEY,
Value TEXT
);
CREATE TABLE IF NOT EXISTS HoyolabUserInfo
(
Uid INTEGER NOT NULL PRIMARY KEY,
Nickname TEXT,
Introduce TEXT,
AvatarUrl TEXT,
Pendant TEXT,
Cookie TEXT
);
CREATE TABLE IF NOT EXISTS GenshinRoleInfo
(
Uid INTEGER NOT NULL PRIMARY KEY,
Region INTEGER NOT NULL,
Nickname TEXT,
Level INTEGER NOT NULL,
RegionName TEXT,
Cookie TEXT
);
INSERT OR REPLACE INTO DatabaseVersion (Key, Value) VALUES ('DatabaseVersion', 1);
COMMIT;";
public const string TableStructure_Initial = """
CREATE TABLE IF NOT EXISTS DatabaseVersion
(
Key TEXT NOT NULL PRIMARY KEY,
Value TEXT
);
""";


private const string TableStructure_1 = """
BEGIN TRANSACTION;
CREATE TABLE IF NOT EXISTS Setting
(
Key TEXT NOT NULL PRIMARY KEY,
Value TEXT
);
CREATE TABLE IF NOT EXISTS HoyolabUserInfo
(
Uid INTEGER NOT NULL PRIMARY KEY,
Nickname TEXT,
Introduce TEXT,
AvatarUrl TEXT,
Pendant TEXT,
Cookie TEXT
);
CREATE TABLE IF NOT EXISTS GenshinRoleInfo
(
Uid INTEGER NOT NULL PRIMARY KEY,
Region INTEGER NOT NULL,
Nickname TEXT,
Level INTEGER NOT NULL,
RegionName TEXT,
Cookie TEXT
);
INSERT OR REPLACE INTO DatabaseVersion (Key, Value) VALUES ('DatabaseVersion', 1);
COMMIT;
""";



Expand Down
4 changes: 2 additions & 2 deletions Xunkong.Widget/Services/HoyolabService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ public void DeleteUserInfo(UserInfo info)



public async Task<List<UserInfo>> GetAllUserInfosAsync()
public async IAsyncEnumerable<UserInfo> GetAllUserInfosAsync()
{
var userInfos = new List<UserInfo>();
var hoyolabUsers = GetHoyolabUserInfos();
Expand All @@ -209,8 +209,8 @@ public async Task<List<UserInfo>> GetAllUserInfosAsync()
userInfo.Error = true;
userInfo.ErrorMessage = ex.Message;
}
yield return userInfo;
}
return userInfos;
}


Expand Down
54 changes: 33 additions & 21 deletions Xunkong.Widget/XBoxWidgetPage.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using Windows.UI.Xaml;
Expand All @@ -28,7 +27,7 @@ private void OnPropertyChanged([CallerMemberName] string propertyName = "")
private readonly HoyolabService _hoyolabService;


private ObservableCollection<UserInfo> _UserInfos;
private ObservableCollection<UserInfo> _UserInfos = new();
public ObservableCollection<UserInfo> UserInfos
{
get { return _UserInfos; }
Expand Down Expand Up @@ -76,30 +75,36 @@ public XBoxWidgetPage()




private async void XBoxWidgetPage_Loaded(object sender, RoutedEventArgs e)
{
try
{
bool cleared = false;
ShowErrorEmotion = false;
if (!_hoyolabService.AnyUserInfo())
{
ShowErrorEmotion = true;
ErrorMessage = "没有账号";
return;
}
var userInfos = await _hoyolabService.GetAllUserInfosAsync();
if (userInfos.Any(x => x.Error))
await foreach (var item in _hoyolabService.GetAllUserInfosAsync())
{
ShowErrorEmotion = true;
var first = userInfos.FirstOrDefault(x => x.Error);
if (first != null)
if (item.Error)
{
ErrorMessage = first.ErrorMessage;
ShowErrorEmotion = true;
ErrorMessage = item.ErrorMessage;
UserInfos.Clear();
return;
}
else
{
if (!cleared)
{
UserInfos.Clear();
}
UserInfos.Add(item);
}
return;
}
UserInfos = new ObservableCollection<UserInfo>(userInfos);
await _hoyolabService.UpdateUserInfosAsync();
}
catch (Exception ex)
{
Expand All @@ -119,25 +124,32 @@ public async Task RefreshAsync()
}
try
{
bool cleared = false;
ShowErrorEmotion = false;
if (!_hoyolabService.AnyUserInfo())
{
ShowErrorEmotion = true;
ErrorMessage = "没有账号";
return;
}
var userInfos = await _hoyolabService.GetAllUserInfosAsync();
if (userInfos.Any(x => x.Error))
await foreach (var item in _hoyolabService.GetAllUserInfosAsync())
{
ShowErrorEmotion = true;
var first = userInfos.FirstOrDefault(x => x.Error);
if (first != null)
if (item.Error)
{
ErrorMessage = first.ErrorMessage;
ShowErrorEmotion = true;
ErrorMessage = item.ErrorMessage;
UserInfos.Clear();
return;
}
else
{
if (!cleared)
{
UserInfos.Clear();
}
UserInfos.Add(item);
}
return;
}
UserInfos = new ObservableCollection<UserInfo>(userInfos);
await _hoyolabService.UpdateUserInfosAsync();
}
catch (Exception ex)
{
Expand Down
1 change: 1 addition & 0 deletions Xunkong.Widget/Xunkong.Widget.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
<RootNamespace>Xunkong.Widget</RootNamespace>
<AssemblyName>Xunkong.Widget</AssemblyName>
<DefaultLanguage>zh-CN</DefaultLanguage>
<LangVersion>preview</LangVersion>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.22000.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion>
Expand Down

0 comments on commit 48c07d8

Please sign in to comment.