1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-16 18:27:31 +08:00
Commit Graph

1098 Commits

Author SHA1 Message Date
Bartłomiej Dach
48dc2332fd
Refactor test to be easier to work with 2022-12-22 19:59:35 +01:00
Dean Herbert
27c497145f Fix the MOTHERLOAD of undetected issues that are now visible thanks to net6.0 2022-12-16 18:16:26 +09:00
Joseph Madamba
56e94e49a3 Display nominated ranked beatmaps in user profile 2022-12-06 23:36:11 -08:00
Dean Herbert
b7f0310070
Merge pull request #21353 from peppy/no-initial-presence
Stop requesting messages as part of initial chat presence
2022-11-30 16:15:23 +09:00
Dan Balasescu
7bc8908ca9 Partial everything 2022-11-27 00:00:27 +09:00
Dean Herbert
462a213ffc Add TODO note about handling initial silences 2022-11-21 15:23:04 +09:00
Dean Herbert
5c640d15a0 Stop requesting messages as part of initial chat presence 2022-11-21 15:17:54 +09:00
Dean Herbert
d17c091d63 Move constant to a better location 2022-11-18 15:47:31 +09:00
Dan Balasescu
219d049edf
Merge pull request #21140 from maromalo/long-standard
Standardise scores to `long` type
2022-11-18 15:26:33 +09:00
Dan Balasescu
57b8495c7a Merge branch 'master' into long-standard 2022-11-18 14:24:04 +09:00
Dean Herbert
964ceddf83 Fix API queue only being flushed once while in a failing state 2022-11-18 14:21:37 +09:00
Dean Herbert
f343ba6111 Add xmldoc for chat ack request 2022-11-13 00:10:06 +09:00
Dean Herbert
22d8a1160e Fix last silence ID being updated too often, causing most silences to be missed 2022-11-13 00:10:06 +09:00
maromalo
1911120afe
Merge branch 'master' into long-standard 2022-11-12 09:52:11 -03:00
Dean Herbert
dde09d409b Merge branch 'master' into chat-silences 2022-11-12 21:00:56 +09:00
Dean Herbert
19876ca0fb
Merge branch 'master' into websocket-chat-2 2022-11-11 23:53:42 +09:00
Dan Balasescu
cf03001c83 Better handling for joining channels with only ID 2022-11-07 11:52:07 +09:00
maromalo
b7ef9b176d Make score type consistent 2022-11-06 19:59:27 -03:00
Dan Balasescu
66bbe34116 Move polling clients to osu.Game.Tests namespace 2022-11-04 18:52:57 +09:00
Dan Balasescu
58396d49dc Fix handling of local echo deduplication 2022-11-04 18:44:22 +09:00
Salman Ahmed
ac8fb4f9b2 Fix beatmap cards still potentially showing twice in listing 2022-11-04 03:23:34 +03:00
Dean Herbert
e6c45b8ab5 Merge branch 'master' into comment-report 2022-11-03 15:35:42 +09:00
Dean Herbert
4f8e912f06 Fix APINotification parsing failing 2022-11-02 17:53:19 +09:00
Dan Balasescu
063a8bdf9e Remove messages from silenced users 2022-11-02 17:13:14 +09:00
Dan Balasescu
5b25ef5f2f Construct notifications client via IAPIProvider 2022-11-01 21:34:34 +09:00
Dean Herbert
17f482bfc3
Merge branch 'master' into websocket-chat-2 2022-10-31 16:11:58 +09:00
Dan Balasescu
efa8256911 Use more verbatim strings 2022-10-28 16:32:17 +09:00
Dan Balasescu
b3219526a5 Populate beatmap ruleset in SoloScoreInfo.ToScoreInfo() 2022-10-28 14:42:45 +09:00
Dean Herbert
dcff8a193c Use better method of forcing serialisation 2022-10-28 01:26:10 +09:00
Dean Herbert
3c4ba6e9fc Fix SoloScoreInfo.Rank not being serialised if rank is D 2022-10-27 19:02:32 +09:00
Dan Balasescu
6cca3a3dc8 Add new API requests 2022-10-27 14:55:24 +09:00
Dean Herbert
af84f708b7 Avoid serialising some more properties of SoloScoreInfo unless present 2022-10-21 19:30:35 +09:00
ansel
e1785f73a2 Make report's comment not optional 2022-10-16 20:14:05 +03:00
ansel
7251d41deb Add request class 2022-10-14 16:15:28 +03:00
ansel
7645fe20f5 Merge branch 'master' into comment-deletion 2022-09-28 17:55:22 +03:00
ansel
58d9509ce6 Apply NRT to Comment 2022-09-27 22:45:05 +03:00
ansel
5282c8b8c6 Fix CQ 2022-09-27 19:40:18 +03:00
ansel
5da7cb5397 Make comment ID public for test 2022-09-27 19:02:18 +03:00
ansel
1721b8e47a Add request class 2022-09-27 16:25:26 +03:00
Dan Balasescu
1811647e34 Make room requests handler handle GetBeatmapRequest 2022-09-27 20:30:41 +09:00
Dean Herbert
de6709d12c Fix rank_history serialisation order dependence
```csharp
[network] 2022-09-26 18:18:39 [verbose]: Processing response from https://dev.ppy.sh/api/v2/me/ failed with Newtonsoft.Json.JsonSerializationException: Error setting value to 'rankHistory' on 'osu.Game.Online.API.Requests.Responses.APIUser'.
[network] 2022-09-26 18:18:39 [verbose]: ---> System.NullReferenceException: Object reference not set to an instance of an object.
[network] 2022-09-26 18:18:39 [verbose]: at osu.Game.Online.API.Requests.Responses.APIUser.set_rankHistory(APIRankHistory
value) in /tmp/osu/osu.Game/Online/API/Requests/Responses/APIUser.cs:line 231
```
2022-09-27 12:46:17 +09:00
Salman Ahmed
9a10ecb378 Clarify purpose of APIUserScoreAggregate 2022-09-17 19:37:30 +03:00
Dean Herbert
581a4d2d6d Use APIBeatmap for realm migration requiring ShortName mapping 2022-09-15 16:58:58 +09:00
andy840119
1398a7e11e Property should accept the nullable state. 2022-09-10 10:46:40 +08:00
Dan Balasescu
ba2ef424d4 Turn score ids into ulongs 2022-09-09 11:46:06 +09:00
Dan Balasescu
b10026993a Don't serialise has_replay 2022-09-02 16:41:53 +09:00
Dan Balasescu
a277431266 Add has_replay and legacy_score_id to SoloScoreInfo 2022-09-01 21:10:38 +09:00
Dan Balasescu
799c015bff Add LegacyTotalScore to SoloScoreInfo 2022-08-30 15:50:19 +09:00
Dan Balasescu
f70af779a4 Add maximum statistics to ScoreInfo/SoloScoreInfo 2022-08-24 17:28:41 +09:00
Dean Herbert
a1e849c4db Ensure that DummyAPIAccess runs all queued tasks on disposal 2022-08-20 16:22:35 +09:00
Dean Herbert
865d63f768 Refactor APIAccess main loop to read better 2022-08-11 15:43:39 +09:00
Dean Herbert
47196b19a5 Stop setting Online state in handleRequest
This is already handled amicably by the `Failing` -> `Connecting` flow.
Having this set in `handleRequest` throws things off, potentially
leading to the `Online` state change before the user has been populated.
2022-08-11 14:36:30 +09:00
Dean Herbert
7ec67c28b9 Set Online state sooner in connection process
This isn't really required as such, but feels more correct. There was no
reason for it to wait for the friend population to complete before
deeming things to be "online".
2022-08-11 14:35:56 +09:00
Dean Herbert
e5b534bb26 Add thread safety to APIAccess.LocalUser 2022-08-11 12:45:26 +09:00
Dean Herbert
4a312d5658 Use a placeholder user with the correct username during connecting process
This allows for various components (like gameplay) to obtain a correct
username even if the API is not yet in a connected state. The most
common case is during startup, where a connection may not have been
established yet, but the user's username was restored from their config
file.

By making the change, local scores will now have the correct username
(although avatar etc. will be missing, which I think it fine) even if
the API is not yet connected. Previously, they would show up as "Guest".
2022-08-09 17:13:09 +09:00
Dean Herbert
f9d0cc3c4e Change APIAccess.IsLoggedIn to also return true when connecting
All usages of this are made with the intention of showing data when an
api is going to eventually become available. In the case of a login
failure, components are also able to display a correct state.

With this change, it makes online components display in a more correct
state during startup or initial logging in phase.
2022-08-09 17:11:44 +09:00
Dean Herbert
0537c471dc
Merge pull request #19582 from smoogipoo/apimod-json-cleanup
Don't serialise empty mod settings
2022-08-08 11:49:08 +09:00
Dan Balasescu
0de00e9b3f Don't serialise empty mod settings 2022-08-05 14:00:53 +09:00
Dan Balasescu
2d9da07eb6 Trim zero values from hit statistics 2022-08-04 19:27:50 +09:00
Dan Balasescu
8ff7770a71 Omit irrelevant data from SoloScoreInfo serialisation 2022-08-04 19:11:39 +09:00
Salman Ahmed
1b6ebcfd87 Remove SubmittableScore and replace with SoloScoreInfo extension method 2022-07-25 13:43:43 +03:00
Salman Ahmed
d04df19c7e Remove APIScore and replace its final usage 2022-07-25 13:13:46 +03:00
Dean Herbert
62133fa069
Merge pull request #19246 from frenzibyte/fix-wiki-navigation
Fix wiki overlay not handling path redirection properly
2022-07-20 20:08:11 +09:00
Salman Ahmed
e7f35701db Add failing test case 2022-07-20 09:06:11 +03:00
Dean Herbert
07874efa7f Set last online update to actual value provided by data source 2022-07-19 19:39:51 +09:00
Dean Herbert
2716bd41d9 Use more correct json casing in APIScoresCollection
osu-web API is already returning both of these casings for backwards
compatibility, but the former will be removed at some point.

e540276721/app/Http/Controllers/BeatmapsController.php (L314-L315)
2022-07-19 15:34:17 +09:00
Bartłomiej Dach
6f37487528
Replace calls to defective Humanizer methods with correct version 2022-07-18 22:34:58 +02:00
Salman Ahmed
2befcfedbb
Merge branch 'master' into fix-multiplayer-participant-panel-null-ruleset 2022-07-18 12:24:47 +03:00
Salman Ahmed
b5c7d07ba8
Merge branch 'master' into fix-user-profile-overlay 2022-07-18 10:27:33 +03:00
Dean Herbert
a7f19cc796
Merge pull request #19137 from frenzibyte/country-enum
Replace `Country` class with enumeration
2022-07-18 16:12:24 +09:00
Salman Ahmed
84c1c26a7f
Merge branch 'master' into fix-user-profile-overlay 2022-07-18 09:45:25 +03:00
Dean Herbert
21bf7ee448 Turn on nullability in ParticipantPanel 2022-07-18 15:27:55 +09:00
Salman Ahmed
018da74fe8 Replace default with CountryCode.Unknown 2022-07-18 08:54:35 +03:00
Salman Ahmed
05d692bd55 Move Country to end of class 2022-07-18 08:43:41 +03:00
Dean Herbert
566bad0b5f Make SoloScoreInfo.EndedAt non-null
Seems to already be the case for databased scores. Will be assured by
https://github.com/ppy/osu-web/issues/9116.

I've updated the `osu-score-statistics-processor` with this
consideration.
2022-07-18 14:42:43 +09:00
Salman Ahmed
ef6e16b1cb UserCountry -> Country 2022-07-18 08:40:43 +03:00
Salman Ahmed
100c53f9ef Country -> CountryCode 2022-07-18 08:40:34 +03:00
tsunyoku
5875f53e07 remove unused import 2022-07-17 18:16:30 +01:00
tsunyoku
032cc6c670 use type annotation for nullable BeatmapSet 2022-07-17 18:15:36 +01:00
tsunyoku
8791edf84c set Beatmap.BeatmapSet to BeatmapSet property in SoloScoreInfo 2022-07-17 18:10:33 +01:00
tsunyoku
c73eff7c89 add BeatmapSet to SoloScoreInfo 2022-07-17 14:46:22 +01:00
tsunyoku
c2277031f0 add Beatmap to SoloScoreInfo 2022-07-17 14:21:55 +01:00
tsunyoku
1f288157f4 change GetUserScoresRequest to return SoloScoreInfo instead of APIScore 2022-07-17 14:07:05 +01:00
Salman Ahmed
9382636da9 Catch and log exceptions from mod setting copy failure 2022-07-17 06:34:50 +03:00
Salman Ahmed
6636e462dc Fix SoloScoreInfo not carrying mod settings in conversion methods 2022-07-17 06:18:59 +03:00
Salman Ahmed
9c81241f4c Fix potential nullref on APIUser.Country
We need NRT sooner than later...
2022-07-16 06:02:05 +03:00
Salman Ahmed
e62049f4a9 Update various usages of Country inline with new enum 2022-07-16 05:04:24 +03:00
Salman Ahmed
00f4c8052e Update APIUser to provide enum from serialised country code 2022-07-16 05:04:24 +03:00
Salman Ahmed
b42f49aeaa Handle APIException from user request during logging in 2022-07-16 00:38:53 +03:00
Dean Herbert
c8c79d2185 Standardise HasReplay implementation (and remove from persisting to realm) 2022-07-15 16:14:21 +09:00
Dean Herbert
688fcb256f Update score retrieval endpoint to access new storage 2022-07-15 15:47:25 +09:00
Dean Herbert
966882013d Remove classic mod attribution to SoloScoreInfo conversion path 2022-07-15 15:47:05 +09:00
Dean Herbert
0fe3bac173 Store mods to array and update test scenes 2022-07-12 18:00:25 +09:00
Dean Herbert
12a56e36bd Fix ID mapping and move osu-web additions to region to identify them clearly 2022-07-12 18:00:25 +09:00
Dean Herbert
f956955d4d Combine ScoreInfo construction helper methods 2022-07-12 18:00:25 +09:00
Dean Herbert
900e0ace8e Standardise naming and enable NRT 2022-07-12 18:00:25 +09:00
Dean Herbert
1bef2d7b39 Add and consume SoloScoreInfo 2022-07-12 18:00:25 +09:00
andy840119
48047f2e58 Move the null check in the outside.
AddCursor() should not accept the null value.
2022-06-30 23:29:49 +08:00
Dean Herbert
569fde4b47 Add messages to all InvalidOperationExceptions
Without this, they can be very non-descript and hard to track down
2022-06-28 01:34:25 +09:00
Dan Balasescu
b13fa924fd
Merge pull request #18865 from peppy/fix-flaky-chat-test
Fix chat tests failing 1/10000 runs
2022-06-27 18:06:00 +09:00
Dean Herbert
13dcaf82ad Fix chat tests failing 1/10000 runs
31a447fda0/osu.Game/Online/Chat/ChannelManager.cs (L412-L414)

Sigh.
2022-06-27 16:50:10 +09:00
Dan Balasescu
f6a6538e96 Add more properties to IBeatmapOnlineInfo 2022-06-27 16:07:15 +09:00
Bartłomiej Dach
26c5b59f6d
Replace usages of string.To{Lower,Upper}() 2022-06-24 11:57:45 +02:00
Dan Balasescu
f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +09:00
Dean Herbert
eb2d822530 Fix web requests potentially being performed after cancelled
Closes https://github.com/ppy/osu/issues/18524.
2022-06-03 16:04:52 +09:00
Dean Herbert
c18dd8c8fb Ensure Queue operations on DummyAPIAccess are performed on the update thread 2022-05-30 16:32:44 +09:00
Dean Herbert
a2a057440e Fail requests taretting the fake API with a more deliberate exception
I think this feels better than relying on some other method to throw an
exception.
2022-05-30 16:31:54 +09:00
Salman Ahmed
d5027cdfbd Add FeaturedInSpotlight property to API beatmapsets 2022-05-14 19:46:13 +03:00
Dean Herbert
319867f73c Mark GuestUser as system user via Id for now
Should resolve https://github.com/ppy/osu/issues/18105.

Checking through usages, it doesn't immediately look like this will
regress any other scenarios.
2022-05-06 17:37:46 +09:00
Salman Ahmed
a9ea0ab91b Add support for fetching user guest participations 2022-04-22 07:55:39 +03:00
Joseph Madamba
5e5c8e78a6 Use existing web localisation for most hardcoded strings 2022-04-20 16:31:11 -07:00
Salman Ahmed
c858ec2483 Pagination -> `PaginationParameters 2022-04-19 02:48:34 +03:00
Salman Ahmed
96d4369cc8 Introduce Pagination and simplify paginated API requests 2022-04-19 02:04:23 +03:00
Salman Ahmed
9d59cd408f Add concept of "initial items count" in paginated API requests 2022-04-18 22:59:49 +03:00
Dean Herbert
a0692ce477 Add a const for system users which should never display a profile 2022-03-28 22:22:56 +09:00
Dean Herbert
1814a325d8 Move GetSettingUnderlyingValue to a SettingSource extension method 2022-03-15 14:54:00 +09:00
Dan Balasescu
c61397cc22 Fix whitespace/inspection 2022-03-10 16:22:27 +09:00
Dean Herbert
0267aed846 Change ToMod to return an UnknownMod rather than throw if a mod isn't available
As seen by this kind of crash, having the `.ToMod` method throw can be
very problematic and also hidden (as it is used inside of models in
places where exceptions are not expected to occur).

Given there are tens of usages of this method, returning a placeholder
mod seems like a better idea than outright throwing.

```
 An unhandled has occurred.
 System.InvalidOperationException:
There is no mod in the ruleset (osu) matching the acronym AS.
 at osu.Game.Online.API.APIMod.ToMod(Ruleset ruleset) in /Users/dean/Projects/osu/osu.Game/Online/API/APIMod.cs:line 54
 at osu.Game.Scoring.ScoreInfo.<get_Mods>b__117_0(APIMod m) in /Users/dean/Projects/osu/osu.Game/Scoring/ScoreInfo.cs:line 193
 at System.Linq.Enumerable.SelectArrayIterator`2.ToArray()
 at osu.Game.Scoring.ScoreInfo.get_Mods() in /Users/dean/Projects/osu/osu.Game/Scoring/ScoreInfo.cs:line 193
 at osu.Game.Screens.Select.Leaderboards.BeatmapLeaderboard.<>c.<subscribeToLocalScores>b__40_2(ScoreInfo s) in /Users/dean/Projects/osu/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs:line 199
 at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
 at osu.Game.Database.RealmObjectExtensions.Detach[T](IEnumerable`1 items) in /Users/dean/Projects/osu/osu.Game/Database/RealmObjectExtensions.cs:line 180
 at osu.Game.Screens.Select.Leaderboards.BeatmapLeaderboard.<>c__DisplayClass40_0.<subscribeToLocalScores>g__localScoresChanged|1(IRealmCollection`1 sender, ChangeSet changes, Exception exception) in /Users/dean/Projects/osu/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs:line
209
 at Realms.RealmCollectionBase`1.Realms.INotifiable<Realms.NotifiableObjectHandleBase.CollectionChangeSet>.NotifyCallbacks(Nullable`1 changes, Nullable`1 exception)
 at Realms.NotifiableObjectHandleBase.NotifyObjectChanged(IntPtr managedHandle, IntPtr changes, IntPtr exception)
```
2022-03-09 17:57:55 +09:00
Riley Quinn
8491bab77c
Replace string locale with Language 2022-03-04 00:57:13 -06:00
Dan Balasescu
16a3bbbcb4
Merge pull request #16944 from peppy/rooms-request-faster
Update playlists/multiplayer to use new compact response
2022-02-24 23:20:07 +09:00
Dan Balasescu
2acaffd5e7 Fix APIMod storing bindables instead of value 2022-02-24 17:01:12 +09:00
Dean Herbert
53bbd00675 Also make APIUser opt-in and remove the remaining serialization exclusion rule 2022-02-23 17:12:38 +09:00
Dean Herbert
71ae425fb2 Merge branch 'master' into rooms-request-faster 2022-02-22 15:45:05 +09:00
Dean Herbert
7f4cc221d2 Add API versioning 2022-02-21 19:02:03 +09:00
Dean Herbert
9d0023c750 Fix incorrect mappings 2022-02-17 21:12:51 +09:00
Dean Herbert
3d5ed24e20 Fix beatmap overlay leaderboards and links not working
Completely aware that this isn't how it should be done, but would like
to get this out in a hotfix release today. Maybe changes opinions on
https://github.com/ppy/osu/pull/16890 structure?
2022-02-17 21:05:00 +09:00
Dan Balasescu
5db63a8751 Expose read-only list from request 2022-02-16 11:30:03 +09:00
Dan Balasescu
ccd265ebe7 Handle beatmap lookup requests in TestRoomRequestsHandler 2022-02-15 23:41:50 +09:00
Dan Balasescu
43f1044987
Merge pull request #16850 from frenzibyte/readonly-pinned-scores
Add read-only pinned scores view in user profile overlay
2022-02-11 16:15:46 +09:00
Salman Ahmed
92e22c57a7 Introduce private APIRuleset for online ID equality comparison 2022-02-11 08:27:01 +03:00
Salman Ahmed
9cd88ec2b8 Update API models with score pinning changes 2022-02-10 21:23:38 +03:00
Dean Herbert
a69c7a9de6 Split exceptions back out to give better messaging 2022-02-03 14:09:27 +09:00
Dean Herbert
62fa915193 Standardise exception messages for local-user-logged-out flows 2022-02-03 13:58:55 +09:00
Dan Balasescu
d9a43b4c4c Fix API requests not completing when offline 2022-02-03 13:16:54 +09:00
Dean Herbert
4f8d29c1c0 Merge branch 'master' into realm-integration/score-and-beatmaps 2022-01-13 18:25:09 +09:00
Joseph Madamba
66773f6d7d Use comments to disable identifier typos instead 2022-01-12 15:49:28 -08:00
Dean Herbert
4c79145c11 Fix potential mod nullref in APIUserScoreAggregate's CreateScoreInfo implementation 2022-01-13 00:28:16 +09:00
Dean Herbert
51251e3204 Fix CI reported warnings 2022-01-12 22:39:00 +09:00
Dean Herbert
2a4bee61dd Update many score-related classes to move closer to being able to persist to realm 2022-01-12 16:57:27 +09:00
Dean Herbert
fda529de26 Update usages of APIUser to RealmUser 2022-01-12 16:39:36 +09:00
Joseph Madamba
cdc148f78e Increase scope of identifier typo disables on special cases 2021-12-29 14:07:36 -08:00
Joseph Madamba
c22a07d9fc Bump identifier typo inspection and fix remaining identifier names 2021-12-28 11:26:42 -08:00
Joseph Madamba
0bd928b5cd Fix incorrect naming / apply review 2021-12-27 21:44:19 -08:00
Joseph Madamba
7de43e3aba Fix most open compound words in identifiers being closed 2021-12-27 20:26:28 -08:00
Joseph Madamba
98524d60a4 Fix clear identifier typos 2021-12-27 20:26:28 -08:00
Dean Herbert
c6d0d6451d Change IScoreInfo.User to an interface type 2021-12-10 16:11:49 +09:00
Dean Herbert
bff02bedbf Rename APIScoreInfo to APIScore 2021-12-10 16:11:49 +09:00
Dean Herbert
dbb08f7d46 Use OnlineID for set operations 2021-12-10 16:11:48 +09:00
Salman Ahmed
974987550f Move API request response size log to correct logging target 2021-12-07 04:01:56 +03:00
Dean Herbert
e75e209053 Cache and consume IRulesetStore where feasible 2021-12-03 18:16:01 +09:00