1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-06 10:47:28 +08:00
Commit Graph

2811 Commits

Author SHA1 Message Date
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
6ac19615fa Fix test failure 2022-11-11 14:55:41 +09:00
Dan Balasescu
fdca3c2d1c Rename method for consistency 2022-11-07 14:35:42 +09:00
Dan Balasescu
67e99b5344 Lookup channels before calling HandleJoinedChannel() 2022-11-07 14:34:55 +09:00
Joseph Madamba
b977fc8181 Use autosize instead of max width on fixed width timestamps 2022-11-06 19:28:01 -08:00
Dan Balasescu
f931bdc5ff Fix channel lookup not considering missing ids 2022-11-07 12:25:23 +09:00
Dan Balasescu
cd8402df72 Print event type to logs 2022-11-07 12:11:50 +09:00
Dan Balasescu
cf03001c83 Better handling for joining channels with only ID 2022-11-07 11:52:07 +09:00
Dan Balasescu
e3adf5a985 Handle channel parts 2022-11-07 11:36:55 +09:00
maromalo
b7ef9b176d Make score type consistent 2022-11-06 19:59:27 -03:00
Dan Balasescu
d426977f03 Handle channel joins 2022-11-04 20:11:42 +09:00
Dan Balasescu
f12ada9d92 Fix chat connecting too early 2022-11-04 19:36:24 +09:00
Dan Balasescu
1d2818dc70 Reschedule ack request on completion 2022-11-04 19:02:26 +09:00
Dan Balasescu
66bbe34116 Move polling clients to osu.Game.Tests namespace 2022-11-04 18:52:57 +09:00
Dan Balasescu
fa18b5f701 Construct notifications client inside ChannelManager 2022-11-04 18:51:00 +09:00
Dan Balasescu
72745656e7 Remove StartChat()/chat enablement 2022-11-04 18:48:34 +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
f688ed12d0 Add test for removing chat messages 2022-11-02 17:00:47 +09:00
Dean Herbert
2b04e852be
Merge branch 'master' into websocket-chat-2 2022-11-02 14:56:13 +09:00
Dan Balasescu
30800c9252 Add/adjust xmldocs 2022-11-02 13:16:34 +09:00
Dan Balasescu
3816152c9d Merge branch 'socket-client' into websocket-chat-2 2022-11-02 11:49:57 +09:00
Dan Balasescu
e59c8b7d24 Use IDisposable instead 2022-11-02 11:49:04 +09:00
Dan Balasescu
c9108ce41b Rename StartAsync -> ConnectAsync 2022-11-02 11:44:16 +09:00
Dan Balasescu
46d1713e28 Rename Socket* -> PersistentEndpoint* 2022-11-02 11:43:22 +09:00
Dan Balasescu
8ac2075c61 Fix possible threading issues
Not really sure of the best way to handle this in general. It could be
argued that this should be a `Component` type and the bindable bound in
`LoadComplete()`...
2022-11-02 10:04:25 +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
Dean Herbert
8a37649097
Merge branch 'master' into socket-client 2022-10-31 16:00:14 +09:00
Dan Balasescu
d3173ab1bd Remove weird cast 2022-10-28 18:54:34 +09:00
Dan Balasescu
ab78cde2d4 Fix crossthread mutations 2022-10-28 18:37:43 +09:00
Dan Balasescu
169bcc2654 Use polling connector in tests 2022-10-28 18:08:08 +09:00
Dan Balasescu
527b1d9db1 Generalise + add polling-style for usage in tests 2022-10-28 17:53:28 +09:00
Dan Balasescu
efa8256911 Use more verbatim strings 2022-10-28 16:32:17 +09:00
Dan Balasescu
2f731f86ba Adjust ChannelManager to use notifications client 2022-10-28 16:28:58 +09:00
Dan Balasescu
33bb1212d1 Add notifications websocket + chat implementation 2022-10-28 16:28:58 +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
Dan Balasescu
4127aaa988 Extract general elements from HubClientConnector into SocketClientConnector 2022-10-27 14:37:10 +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
Feodor0090
fb046e31c1
Merge branch 'master' into comment-report 2022-10-14 16:57:23 +03:00
ansel
7251d41deb Add request class 2022-10-14 16:15:28 +03:00
Dan Balasescu
525f98c158 Fix max combo missing from playlists results screen 2022-10-14 18:01:54 +09:00
Dean Herbert
47fe4eb0bd Merge branch 'master' into comment-deletion 2022-10-12 15:48:26 +09:00
Dean Herbert
74db42394a Silence unobserved exceptions in BeginPlayingInternal
Closes #20526.
2022-10-05 14:31:13 +09: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
Dean Herbert
a1297af441 Apply NRT to base Leaderboard classes 2022-09-26 16:12:47 +09:00
Dean Herbert
32d56fe3a9 Use request cancellation and IsDisposed guard instead of more Schedule 2022-09-26 16:02:33 +09:00
Dean Herbert
37e2579244 Fix reversed checks 2022-09-22 20:35:26 +09:00
Dan Balasescu
7508592789 Clean up some checks 2022-09-22 19:56:24 +09:00
Dean Herbert
29c4d06d36 Merge branch 'fix-gameplay-leaderboard-layout' into gameplay-leaderboards 2022-09-21 14:58:58 +09:00
Dean Herbert
8837618ab1
Merge pull request #20342 from smoogipoo/server-shutdown-countdown
Implement server shutdown countdown + notification
2022-09-20 20:51:16 +09:00
Dan Balasescu
d777afc454 Remove countdown at under 5 seconds 2022-09-20 19:55:44 +09:00
Dean Herbert
68c040175a Ensure Leaderboard.Scores is updated immediately via request flow 2022-09-20 17:02:57 +09:00
Dan Balasescu
b84f716c22 Display seconds when hours>0 to be more lively 2022-09-20 16:02:31 +09:00
Dan Balasescu
ef29987f36 Remove FinalNotification 2022-09-20 15:54:18 +09:00
Dan Balasescu
700000b583 Use custom notification with timer 2022-09-20 15:54:18 +09:00
Salman Ahmed
9a10ecb378 Clarify purpose of APIUserScoreAggregate 2022-09-17 19:37:30 +03:00
Dean Herbert
a1d830e47f Fix formatting 2022-09-17 22:22:56 +09:00
vegguid
0bfe967452 moved BindValueChanged to LoadComplete 2022-09-17 12:58:23 +02:00
vegguid
288cc7b201 Fixed Leaderboard tooltip not following time format setting 2022-09-16 21:36:17 +02:00
Dan Balasescu
92b2417d4c Post notification when room joined 2022-09-16 21:10:11 +09:00
Dan Balasescu
433bb5ae24 Add ServerShuttingDownCountdown 2022-09-16 19:56:52 +09:00
Dean Herbert
4c4fdfd153 Provide scores directly to Player instance rather than relying on DI 2022-09-16 18:15:17 +09:00
Dean Herbert
0227eddda1 Merge branch 'master' into gameplay-leaderboards 2022-09-16 15:44:58 +09:00
Dean Herbert
21ac3fd88b Catch any unobserved exceptions during beatmap metadata harvesting
The process will retry when a connection is successful, so this doesn't
need to be as loud as it was.

Addresses https://github.com/ppy/osu/discussions/20331.
2022-09-16 14:00:06 +09:00
Dean Herbert
581a4d2d6d Use APIBeatmap for realm migration requiring ShortName mapping 2022-09-15 16:58:58 +09:00
Dean Herbert
6d167070f8 Add back DI leaderboard retrieval via bindable pathway 2022-09-13 18:45:11 +09:00
Dean Herbert
cb6d02ec3a
Merge pull request #19066 from andy840119/remove-the-nullable-disable-in-the-ruleset
Remove the nullable disable annotation in the ruleset class
2022-09-12 19:07:23 +09:00
Dan Balasescu
31225066a1
Merge pull request #19308 from frenzibyte/top-rank-badge-order
Fix best rank badge not handling legacy scores properly
2022-09-12 16:20:21 +09:00
Dan Balasescu
1eb2c74e57 Fix countdown serialisation 2022-09-11 18:50:51 +09:00
andy840119
1398a7e11e Property should accept the nullable state. 2022-09-10 10:46:40 +08:00
Salman Ahmed
dd10a06e3d Merge branch 'master' into top-rank-badge-order 2022-09-09 19:38:44 +03:00
Dan Balasescu
ba2ef424d4 Turn score ids into ulongs 2022-09-09 11:46:06 +09:00
Dan Balasescu
4fc03998a1
Merge pull request #20189 from peppy/fix-playlist-item-download-button-visibility
Fix playlist items showing download button briefly during initial display
2022-09-08 19:47:35 +09:00
Dean Herbert
13d9b2188b
Merge pull request #20145 from smoogipoo/multiple-countdowns
Implement support for multiple active countdowns in multiplayer
2022-09-08 19:15:30 +09:00
Dean Herbert
0de220c45c Change IsExclusive default value to true 2022-09-08 17:54:29 +09:00
Dean Herbert
ed81297611 Fix playlist items showing download button briefly during initial local presence checks 2022-09-08 17:10:45 +09:00
Dan Balasescu
b2f30fbf8c Add countdown exclusivity 2022-09-05 20:13:23 +09:00
Dan Balasescu
2923c10cd8 Rewrite rooms to store multiple active countdowns
Update test to the new structure
2022-09-05 19:03:26 +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
d70208fcf1 Default to off 2022-09-01 14:14:22 +09:00
Dan Balasescu
b5ec7d06dd Add auto-skip setting
Default to auto skip
2022-08-31 20:24:06 +09:00
Dean Herbert
09aa3e065d Move colouring to full icon content rather than background 2022-08-30 18:06:48 +09:00
Dan Balasescu
799c015bff Add LegacyTotalScore to SoloScoreInfo 2022-08-30 15:50:19 +09:00
Dean Herbert
b9d9bf3004
Merge pull request #19938 from frenzibyte/fix-multi-spectator-results-screen
Fix multi-spectator potentially getting stuck for passed players
2022-08-26 21:53:17 +09:00
Salman Ahmed
6840e906e7 watchedUsers -> watchedUsersRefCounts 2022-08-25 09:50:52 +03:00
Salman Ahmed
146cc62f00
Merge branch 'master' into maximum-statistics-2 2022-08-25 08:18:44 +03:00
Dean Herbert
6a0d23cf96 Nest dialog class and apply NRT 2022-08-24 17:39:22 +09:00
Dan Balasescu
f70af779a4 Add maximum statistics to ScoreInfo/SoloScoreInfo 2022-08-24 17:28:41 +09:00
Andrew Hong
ec5fd7ac1d Remove possible 'System.NullReferenceException' 2022-08-24 03:42:16 -04:00
Andrew Hong
b24513038c Add popupdialog button to copy url 2022-08-24 03:35:19 -04:00
Salman Ahmed
7e5086c8d7 Fix spectator client not handling multiple watch calls properly 2022-08-24 10:02:21 +03:00
Dean Herbert
058d67f8e8
Merge pull request #19695 from naoei/ruleset-localization
Change most ruleset-accessible string types to Localisable strings
2022-08-22 16:13:23 +09:00
Nao
189a407cb1
Merge branch 'master' into ruleset-localization 2022-08-20 21:39:10 -04:00
Dean Herbert
a1e849c4db Ensure that DummyAPIAccess runs all queued tasks on disposal 2022-08-20 16:22:35 +09:00
Dean Herbert
c3c44c19cd Use CompositeComponent in various locations 2022-08-19 20:43:15 +09:00
Nao
c940f5abcb
Merge branch 'master' into ruleset-localization 2022-08-14 15:17:44 -04:00
naoei
45e9eda9e7 Localise hit result name 2022-08-14 14:57:02 -04: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
Dan Balasescu
888c4c8e08
Merge pull request #19662 from peppy/startup-correct-username
Use a placeholder user with the correct username during login process
2022-08-10 13:09:37 +09:00
Dan Balasescu
4107049b08 Fix host room status showing ended after playing 2022-08-09 21:43:10 +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
Dean Herbert
fd09155990 Revert blocking call when sending spectator frames
There are a lot of these requests, and we don't really care about
waiting on them to finish sending. This may have negatively affected
send performance for users with very high latency.

Reverts part of 0533249d11.

Addresses concerns in https://github.com/ppy/osu/discussions/19429#discussioncomment-3276400.
2022-07-29 12:24:54 +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
Salman Ahmed
e0266b0d81 Reword comment slightly 2022-07-25 04:39:14 +03:00
Salman Ahmed
f5a5887669 Fix players potentially not displaying in spectator after restart 2022-07-25 04:21:53 +03:00
Salman Ahmed
727fe76b60 Fix TopLocalRank hacking around presence to hide on null rank
Fixed this here because that blocks `Schedule` from running, and I don't
want to add another override to the `IsPresent` flag.
2022-07-23 09:22:22 +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
Dan Balasescu
f9c02c34b6 Merge branch 'master' into beatmap-update-online-flow 2022-07-20 15:15:51 +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
cd39f444ef Expose event from OnlineMetadataClient rather than calling BeatmapUpdater directly 2022-07-19 17:57:01 +09:00
Dean Herbert
12e5bc3f3d Fix BeginPlayingInternal firing actual errors when beatmap not available online 2022-07-19 17:14:57 +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
Dan Balasescu
c07f78409e
Merge pull request #19189 from peppy/peform-actions-after-reconnect
Fix creating multiplayer game during server migration not joining new room correctly
2022-07-19 14:46:29 +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
933a41554b
Merge pull request #19187 from peppy/fix-reconnect-new-spectator-session
Fix spectator client not correctly reconnecting after shutdown
2022-07-18 16:25:04 +09: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
045602b27d
Merge branch 'master' into fix-reconnect-new-spectator-session 2022-07-18 09:55:19 +03:00
Salman Ahmed
84c1c26a7f
Merge branch 'master' into fix-user-profile-overlay 2022-07-18 09:45:25 +03:00
Salman Ahmed
1b302910b1
Merge branch 'master' into fix-reconnect-new-spectator-session 2022-07-18 09:30:29 +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