From e2cdc66f6d378c20511c3be2fe724aa0f68a3eca Mon Sep 17 00:00:00 2001 From: tornac1234 Date: Wed, 1 Jun 2022 13:31:38 +0200 Subject: [PATCH] Added user RulesetsStatistics fetching when connecting --- osu.Game/Online/API/APIAccess.cs | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/osu.Game/Online/API/APIAccess.cs b/osu.Game/Online/API/APIAccess.cs index 62ddd49881..f59bee1065 100644 --- a/osu.Game/Online/API/APIAccess.cs +++ b/osu.Game/Online/API/APIAccess.cs @@ -171,12 +171,32 @@ namespace osu.Game.Online.API }; userReq.Success += u => { - localUser.Value = u; - // todo: save/pull from settings - localUser.Value.Status.Value = new UserStatusOnline(); + u.Status.Value = new UserStatusOnline(); failureCount = 0; + + // getting user's full statistics (concerning every ruleset) + // we delay the localUser.Value setting because BindValueChanged won't record two value changes in a row + var statsRequest = new GetUsersRequest(new int[] { u.Id }); + statsRequest.Failure += _ => + { + localUser.Value = u; + failConnectionProcess(); + }; + statsRequest.Success += result => + { + if (result.Users.Count == 1) + { + u.RulesetsStatistics = result.Users[0].RulesetsStatistics; + localUser.Value = u; + return; + } + // Should never... happen ? + statsRequest.Fail(new Exception("Empty response for GetUsersRequest")); + }; + + handleRequest(statsRequest); }; if (!handleRequest(userReq))