1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-22 16:47:24 +08:00
Commit Graph

2946 Commits

Author SHA1 Message Date
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
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
Dean Herbert
0533249d11 Update all OnlineSpectatorCalls to InvokeAsync 2022-07-18 14:34:02 +09: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
Dean Herbert
55a8a3563b Change MultiplayerMatchSubScreen to not immediately leave the room on connection loss
Instead, we can rely on `MultiplayerClient.Room` going `null`.
2022-07-17 21:19:10 +09:00
Dean Herbert
da7edd5d49 Perform actions after server reconnection 2022-07-17 21:09:48 +09:00
Dean Herbert
8e7e1e6b51 Fix spectator client not correctly reconnecting after shutdown 2022-07-17 21:07:11 +09: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
Dean Herbert
5df9f06480
Merge pull request #19136 from frenzibyte/handle-user-request-failure
Fix login overlay not displaying error message for disabled accounts
2022-07-16 14:40:28 +09: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
Salman Ahmed
8f7b3cf11a Merge branch 'master' into Save-Score-Failed 2022-07-15 22:10:19 +03:00
Dean Herbert
8a48cb701d Tidy up implementation and remove unnecessary enum 2022-07-15 19:02:04 +09: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
Dean Herbert
f500d5ade6 Simplify error output when hub cannot connect
Full call stack is useless in these cases.

Before:

```csharp

[network] 2022-07-07 16:05:31 [verbose]: OnlineMetadataClient connection error: System.Net.Http.HttpRequestException: Response status code does not indicate success: 403 (Forbidden).
[network] 2022-07-07 16:05:31 [verbose]: at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
[network] 2022-07-07 16:05:31 [verbose]: at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.NegotiateAsync(Uri url, HttpClient httpClient, ILogger logger, CancellationToken cancellationToken)
[network] 2022-07-07 16:05:31 [verbose]: at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.GetNegotiationResponseAsync(Uri uri, CancellationToken cancellationToken)
[network] 2022-07-07 16:05:31 [verbose]: at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.SelectAndStartTransport(TransferFormat transferFormat, CancellationToken cancellationToken)
[network] 2022-07-07 16:05:31 [verbose]: at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.StartAsyncCore(TransferFormat transferFormat, CancellationToken cancellationToken)
[network] 2022-07-07 16:05:31 [verbose]: at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.StartAsync(TransferFormat transferFormat, CancellationToken cancellationToken)
[network] 2022-07-07 16:05:31 [verbose]: at Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory.ConnectAsync(EndPoint endPoint, CancellationToken cancellationToken)
[network] 2022-07-07 16:05:31 [verbose]: at Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory.ConnectAsync(EndPoint endPoint, CancellationToken cancellationToken)
[network] 2022-07-07 16:05:31 [verbose]: at Microsoft.AspNetCore.SignalR.Client.HubConnection.StartAsyncCore(CancellationToken cancellationToken)
[network] 2022-07-07 16:05:31 [verbose]: at Microsoft.AspNetCore.SignalR.Client.HubConnection.StartAsyncInner(CancellationToken cancellationToken)
[network] 2022-07-07 16:05:31 [verbose]: at Microsoft.AspNetCore.SignalR.Client.HubConnection.StartAsync(CancellationToken cancellationToken)
[network] 2022-07-07 16:05:31 [verbose]: at osu.Game.Online.HubClientConnector.connect() in /Users/dean/Projects/osu/osu.Game/Online/HubClientConnector.cs:line 119

```

After:

```csharp

[network] 2022-07-07 16:06:59 [verbose]: OnlineMetadataClient connecting...
[network] 2022-07-07 16:06:59 [verbose]: OnlineMetadataClient connect attempt failed: Response status code does not indicate success: 403 (Forbidden).

```
2022-07-08 01:06:40 +09:00
Dean Herbert
79bed0abdf Merge branch 'realm-nested-writes' into metadata-client 2022-07-07 17:37:06 +09:00
Dean Herbert
99afbc7b73 Add missing endpoint URLs 2022-07-05 22:15:52 +09:00
Dean Herbert
bdd1bf4da0 Save last processed id to config for now 2022-07-05 21:42:35 +09:00
Dean Herbert
59d0bac728 Hook up update flow to metadata stream 2022-07-05 21:32:00 +09:00
Dean Herbert
b0d4f7aff6 Add recovery logic after disconnection 2022-07-05 21:32:00 +09:00
Dean Herbert
d217d66852 Add OnlineMetadataClient 2022-07-05 21:32:00 +09:00
Joseph Madamba
df152421a8 Fix personal best score showing delete option on context menu 2022-07-03 10:23:17 -07:00
Dan Balasescu
ccc322e100
Merge pull request #18985 from andy840119/remove-nullable-disable-in-the-replays
Remove nullable disable annotation in replays namespace
2022-07-03 21:19:36 +09:00
andy840119
8c2f4b48fc Use debug.assert for better readable. 2022-07-03 19:27:56 +08:00
Dan Balasescu
1ccfd69690
Merge pull request #18978 from peppy/send-beatmap-hash-to-server
Send beatmap hash to server on solo score request
2022-07-03 13:18:17 +09:00
andy840119
0a1543c6e8 Use AsNonNull() instead. 2022-07-02 19:48:32 +08:00
andy840119
c6d0f0f81b pretend that the beatmap property will not be null.
Not really throw exception will be the better way?
2022-07-02 13:20:46 +08:00
Dean Herbert
634b6cdbbe Send beatmap has to server on solo score request
Right now, the client does nothing to ensure a beatmap is in a valid
state before requesting to submit a score. There is further work to be
done client-side so it is more aware of this state (already handled for
playlists, but not for the solo gameplay loop), but the solution I have
in mind for that is a bit more involved.

This is not used server-side yet, but I want to get this sending so we
can start using it for some very basic validation.

Will resolve the basic portion of #11922 after implemented server-side.
2022-07-02 12:16:17 +09:00
Dan Balasescu
b64c0d011c Isolate client's Room from TestMultiplayerClient 2022-07-01 19:23: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
Dan Balasescu
c6520de749 Ensure PlaylistItem beatmap is not null 2022-06-30 14:24:49 +09:00
Dan Balasescu
8e4a6c43b5
Merge pull request #18914 from peppy/spectator-playback-test-leniences
Increase leniences on `TestSceneSpectatorPlayback.TestWithSendFailure`
2022-06-28 16:15:51 +09:00
Dean Herbert
22b254e5c5 Handle task exception outside of schedule to avoid unobserved exceptions 2022-06-28 15:09:28 +09:00
Dean Herbert
c1075d113f Add logging around current channel changes and join requests
Tracking down a flaky test
(https://teamcity.ppy.sh/buildConfiguration/Osu_Build/553?hideProblemsFromDependencies=false&expandBuildTestsSection=true&hideTestsFromDependencies=false):

```csharp
TearDown : System.TimeoutException : "PM Channel 1 displayed" timed out
--TearDown
   at osu.Framework.Testing.Drawables.Steps.UntilStepButton.<>c__DisplayClass11_0.<.ctor>b__0()
   at osu.Framework.Testing.Drawables.Steps.StepButton.PerformStep(Boolean userTriggered)
   at osu.Framework.Testing.TestScene.runNextStep(Action onCompletion, Action`1 onError, Func`2 stopCondition)
--- End of stack trace from previous location ---
   at osu.Framework.Testing.TestSceneTestRunner.TestRunner.RunTestBlocking(TestScene test)
   at osu.Game.Tests.Visual.OsuTestScene.OsuTestSceneTestRunner.RunTestBlocking(TestScene test) in /opt/buildagent/work/ecd860037212ac52/osu.Game/Tests/Visual/OsuTestScene.cs:line 503
   at osu.Framework.Testing.TestScene.RunTestsFromNUnit()
------- Stdout: -------
[runtime] 2022-06-27 23:18:55 [verbose]: 💨 Class: TestSceneChatOverlay
[runtime] 2022-06-27 23:18:55 [verbose]: 🔶 Test:  TestKeyboardNextChannel
[runtime] 2022-06-27 23:18:55 [verbose]: Chat is now polling every 60000 ms
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #1 Setup request handler
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #2 Add test channels
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #3 Show overlay with channels
[runtime] 2022-06-27 23:18:55 [verbose]: Unhandled Request Type: osu.Game.Online.API.Requests.CreateChannelRequest
[network] 2022-06-27 23:18:55 [verbose]: Failing request osu.Game.Online.API.Requests.CreateChannelRequest (System.InvalidOperationException: DummyAPIAccess cannot process this request.)
[runtime] 2022-06-27 23:18:55 [verbose]: Unhandled Request Type: osu.Game.Online.API.Requests.CreateChannelRequest
[network] 2022-06-27 23:18:55 [verbose]: Failing request osu.Game.Online.API.Requests.CreateChannelRequest (System.InvalidOperationException: DummyAPIAccess cannot process this request.)
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #4 Select channel 1
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #5 Channel 1 is visible
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #6 Press document next keys
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #7 Channel 2 is visible
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #8 Press document next keys
[runtime] 2022-06-27 23:18:55 [verbose]: 🔸 Step #9 PM Channel 1 displayed
[network] 2022-06-27 23:18:55 [verbose]: Request to https://a.ppy.sh/587 failed with System.Net.WebException: NotFound.
[network] 2022-06-27 23:18:55 [verbose]: Request to https://a.ppy.sh/503 failed with System.Net.WebException: NotFound.
[runtime] 2022-06-27 23:19:05 [verbose]: 💥 Failed (on attempt 5,550)
[runtime] 2022-06-27 23:19:05 [verbose]:  Currently loading components (0)
[runtime] 2022-06-27 23:19:05 [verbose]: 🧵 Task schedulers
[runtime] 2022-06-27 23:19:05 [verbose]: LoadComponentsAsync (standard) concurrency:4 running:0 pending:0
[runtime] 2022-06-27 23:19:05 [verbose]: LoadComponentsAsync (long load) concurrency:4 running:0 pending:0
[runtime] 2022-06-27 23:19:05 [verbose]: 🎱 Thread pool
[runtime] 2022-06-27 23:19:05 [verbose]: worker:          min 1      max 32,767 available 32,766
[runtime] 2022-06-27 23:19:05 [verbose]: completion:      min 1      max 1,000  available 1,000
[runtime] 2022-06-27 23:19:05 [debug]: Focus on "ChatTextBox" no longer valid as a result of unfocusIfNoLongerValid.
[runtime] 2022-06-27 23:19:05 [debug]: Focus changed from ChatTextBox to nothing.
```

This kind of logging should be helpful:

```csharp
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #5 Channel 1 is visible
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #6 Press document next keys
[runtime] 2022-06-28 04:59:57 [verbose]: Current channel changed to #channel-2
[runtime] 2022-06-28 04:59:57 [debug]: Pressed (DocumentNext) handled by TestSceneChatOverlay+TestChatOverlay.
[runtime] 2022-06-28 04:59:57 [debug]: KeyDownEvent(PageDown, False) handled by ManualInputManager+LocalPlatformActionContainer.
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #7 Channel 2 is visible
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #8 Press document next keys
[runtime] 2022-06-28 04:59:57 [verbose]: Current channel changed to test user 685
[runtime] 2022-06-28 04:59:57 [debug]: Pressed (DocumentNext) handled by TestSceneChatOverlay+TestChatOverlay.
[runtime] 2022-06-28 04:59:57 [debug]: KeyDownEvent(PageDown, False) handled by ManualInputManager+LocalPlatformActionContainer.
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #9 PM Channel 1 displayed
[runtime] 2022-06-28 04:59:57 [verbose]: 🔸 Step #10 Press document next keys
[runtime] 2022-06-28 04:59:57 [verbose]: Current channel changed to test user 218
```
2022-06-28 14:00:30 +09: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
Dean Herbert
31a447fda0 Update parameter discards 2022-06-24 21:26:19 +09:00
Bartłomiej Dach
26c5b59f6d
Replace usages of string.To{Lower,Upper}() 2022-06-24 11:57:45 +02:00
Bartłomiej Dach
34f1c80b7c
Add and use ILinkHandler interface 2022-06-20 20:04:21 +02:00
Dan Balasescu
f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +09:00
Bartłomiej Dach
f88c568c8d
Update flag sizes after switch to twemoji assets
The old flags used a size of 150x100, while the new assets based on
twemoji use a size of 150x108. Update existing usages to match this new
aspect ratio better.
2022-06-15 21:45:47 +02:00
Dean Herbert
52c8cea27d Update spectator/multiplayer endpoint in line with new deployment 2022-06-11 22:31:01 +09:00
Dean Herbert
c661f2b059 Ensure ChannelManager has access to API from point of construction
Closes https://github.com/ppy/osu/issues/18451.
2022-06-08 19:15:23 +09:00
Dean Herbert
3b46787e06
Merge pull request #18496 from smoogipoo/multiplayer-leaderboard-user-mods-2
Support mod/ruleset combinations in multiplayer gameplay leaderboard
2022-06-08 14:58:13 +09:00
Dean Herbert
eee79c9531
Merge pull request #18610 from jai-x/refactor-chat-line
Refactor `ChatLine` and fix `DrawableChannel` flow padding
2022-06-08 13:54:53 +09:00
Dean Herbert
cd649f7d97
Merge branch 'master' into multiplayer-leaderboard-user-mods-2 2022-06-08 13:39:42 +09:00
Salman Ahmed
830ff66688 Fix message notifier not handling unresolved PM channels 2022-06-08 04:31:31 +03:00
Jai Sharma
2f635fa854 Refactor ChatLine and fix DrawableChannel flow padding
Refactors `ChatLine` component to use more sensible override properties
and layout using grid container. Moves creation of username component
into its own method to simplify BDL.

Updates padding of base `DrawableChannel` flow padding.

Removes usage of `ChatOverlayDrawableChannel` since it's overrides are
no longer needed.

Updates usage of `StandAloneChatDisplay` to use new override properties
of `DrawableChannel`.
2022-06-07 22:35:45 +01:00
Dean Herbert
734636299e
Merge pull request #18567 from jai-x/update-dayseparator
Update `DaySeparator` to use new design throughout
2022-06-06 19:15:43 +09:00
Dean Herbert
7facbc9b28
Merge branch 'master' into multiplayer-test-clone-room 2022-06-06 13:47:16 +09:00
Jai Sharma
c0aaeff2b3 Update DaySeparator to use new design throughout
Moves `DaySeparator` chat component to it's own file and update it to
match new chat design. Makes use of several virtual attributes that can
be overridden to update spacing and layout in other usage contexts.

Remove redundant usage of `ChatOverlayDaySeparator`, since the new
design is now part of the base class.

Create `StandAloneDaySeparator` to use in `StandAloneChatDisplay` which
overrides attributes to match correct spacing and layout for its design.

Ensure that `DrawableChannel.CreateDaySeparator` returns type of
`DaySeparator` instead of `Drawable`.
2022-06-04 18:02:14 +01:00
Jamie Taylor
365819865e
Remove 'submit' sample usages 2022-06-03 22:31:35 +09:00
Dean Herbert
f68df1518f
Merge branch 'master' into multiplayer-test-clone-room 2022-06-03 22:29:39 +09:00
Dan Balasescu
06ac3c1ad3 Make MultiplayerClient update CurrentPlaylistItem 2022-06-03 21:17:23 +09:00
Dan Balasescu
77289c7224 Fix inability to serialise-then-deserialise playlist items 2022-06-03 20:36:12 +09:00
Dan Balasescu
5245995689 Use IsNotNull() helper 2022-06-03 19:50:21 +09:00
Dan Balasescu
646f5f0f33 Isolate "server-side" multiplayer rooms in testing 2022-06-03 19:17:34 +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
Bartłomiej Dach
59ffc8b08e
Merge branch 'master' into multiplayer-leaderboard-user-mods-2 2022-06-02 20:45:10 +02:00
Dan Balasescu
4d9a77bdc0 Stop using Drawable.Clock altogether 2022-06-02 15:02:50 +09:00
Dan Balasescu
6fb1fe06a0 Remove unnecessary ApplyBeatmap call 2022-06-02 14:47:04 +09:00
Dan Balasescu
13d85b8cc7 Merge branch 'scoreprocessor-cleanup' into multiplayer-leaderboard-user-mods-2 2022-05-31 19:53:37 +09:00
Dan Balasescu
22d998dc2a Use new score processor in MultiplayerGameplayLeaderboard 2022-05-30 19:26:26 +09:00
Dan Balasescu
75b50de269 Implement score processor for spectator states 2022-05-30 19:26:26 +09:00
Dan Balasescu
a052e09ac3 Send ScoreProcessor statistics in SpectatorState 2022-05-30 19:26:26 +09:00
Dean Herbert
dcc53fbd47 Merge branch 'rename-chat-overlay' into fix-dummmy-api-request-firing-2 2022-05-30 17:56:12 +09:00
Dean Herbert
f65d2db77f Remove "V2" suffix from ChatOverlay components 2022-05-30 17:54:09 +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
Jai Sharma
8f596520f3 Remove old chat overlay components 2022-05-29 20:08:43 +01:00
Dean Herbert
ca9b2648a3
Merge pull request #18421 from peppy/reconnect-on-server-shutdown-exception
Handle server shutdown messages in room creation and spectator initialisation
2022-05-28 03:52:24 +09:00
Dean Herbert
ef47b380c6 Add featured artist playlist category 2022-05-27 20:18:46 +09:00
Dean Herbert
b2607196b8 Merge branch 'master' into new-chat-integrate 2022-05-26 18:38:26 +09:00
Dean Herbert
abb69a49b0 Handle server shutdown messages in room creation and spectator initialisation 2022-05-26 18:03:41 +09:00
Dean Herbert
63dd9bd493 Expose Reconnect logic in HubClientConnector 2022-05-26 18:02:50 +09:00
Dean Herbert
87959a59d9 Add missing "announce" channel type
Of note, this doesn't mean the channels will display, but it does fix
parsing errors which cause the whole chat display to fail.
2022-05-25 18:28:33 +09:00
Jai Sharma
d2a49ca266 Use ChatOverlayV2 in message notifier and tests 2022-05-23 21:02:50 +01:00
Dean Herbert
136ecb45e2 Rename dummy channel and move to a nested class inside the ChannelListing itself 2022-05-19 19:26:14 +09:00
Jai Sharma
dd4b11c593 Re-add exception handling on PM message request failure 2022-05-18 01:47:23 +01:00
Jai Sharma
ae5b6c3e10 Use dummy channel to show selector and remove ChannelListSelector
Add dummy channel `DummySelectorChannel` which should be set as the
current channel in the channel manager when the selector in the chat
overlay should be shown.

Refactors the `ChannelListItem` to not show mention pill and close
button when the channel is the dummy selector channel.

Ensure that the `ChannelList` selects the dummy channel on clicking the
selector item.

Removes `ChannelListSelector` as it is no longer needed.

Removes the `setCurrent` parameter from `ChannelManager.JoinChannel`
method as it is no longer needed.
2022-05-15 20:24:49 +01:00
Salman Ahmed
d5027cdfbd Add FeaturedInSpotlight property to API beatmapsets 2022-05-14 19:46:13 +03:00
Dean Herbert
a35c57860c Resolve colour inline 2022-05-12 23:54:43 +09:00
Dean Herbert
8760e5d884 Merge branch 'master' into new-chat-drawable-channel 2022-05-12 22:36:19 +09:00
Jai Sharma
cced8609f6 Add setCurrent param to ChannelManager.JoinChannel 2022-05-11 22:51:15 +01:00
Jai Sharma
f4acfbd0df Change return type of CreateDaySeparator to Drawable 2022-05-07 22:23:46 +01:00
Jai Sharma
bec28c5b28 Remove virtual ColourInfo properties from DaySeparator 2022-05-07 22:16:11 +01:00
Jai Sharma
9d62206176 Update new chat overlay day separator colours and spacing
Updates the `DaySeparator` component to have separately settable colours
for the text and the lines.

Updates existing overrides of the `DaySeparator` to use the new colour
setter.

Create new `ChatOverlayDrawableChannel` with adjusted spacing and new
`DaySeparator` colours.
2022-05-06 23:06:18 +01: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
Dean Herbert
2f12c7d9e1 Change ChatTextBox to not handle up/down arrows 2022-05-04 19:09:22 +09:00
Dean Herbert
5c13200c75 Update production endpoint to new version 2022-05-01 13:01:38 +09:00
Dan Balasescu
fe0fcc7e9e Rename countdown object 2022-04-28 20:00:38 +09:00
Dan Balasescu
b293d3923c Merge branch 'master' into multiplayer-force-start-2 2022-04-23 01:03:55 +09:00
Salman Ahmed
a9ea0ab91b Add support for fetching user guest participations 2022-04-22 07:55:39 +03:00
Dan Balasescu
cbb07d4011 Add countdown classes 2022-04-21 23:14:37 +09:00
Dan Balasescu
59622deb1f Add LoadAborted() event 2022-04-21 22:40:52 +09:00
Dan Balasescu
08d250fe58 Rename MatchStarted() -> GameplayStarted() 2022-04-21 22:39:24 +09:00
Dan Balasescu
8c3b541312 Add state for when user is ready for gameplay 2022-04-21 22:35:52 +09:00
Dean Herbert
e54d3702a6 Specify web proxy in SignalR connection building
Might solve https://github.com/ppy/osu/discussions/17897 (depends on how
adeptly signalr falls back to long polling if/when is fails to websocket
via the proxy, or maybe succeed).

As with the framework side change, I've tested this to not break a
zero-proxy flow. Intending to have the user test this after next
release.

Reference:
https://stackoverflow.com/questions/59343807/get-system-default-web-proxy-in-net-core
/
https://stackoverflow.com/questions/13515058/using-signalr-client-through-a-web-proxy
2022-04-21 15:16:41 +09:00
Joseph Madamba
5e5c8e78a6 Use existing web localisation for most hardcoded strings 2022-04-20 16:31:11 -07:00
Bartłomiej Dach
f82d58fa6a
Merge branch 'master' into update-paginated-profile-items-count 2022-04-19 22:17:26 +02: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
043599081b Split out INotificationOverlay to allow for easier testing 2022-04-18 20:14:01 +09:00
Dean Herbert
e315313266 Split out IDialogOverlay to allow for easier testing 2022-04-18 18:36:26 +09:00
Dean Herbert
0a7fbcad1e
Merge branch 'master' into match-start-control-test-refactor 2022-04-13 22:26:10 +09:00
Dean Herbert
c0ad91796d Fix gameplay start flow 2022-04-13 20:57:40 +09:00
Dean Herbert
2bb0d9e6d3 Expose required classes/properties for mocking 2022-04-13 17:02:33 +09:00
Dan Balasescu
59ff9be316
Merge pull request #17788 from peppy/fix-replay-download-button-tests
Fix multiple issues in `ReplayDownloadButton` test scene
2022-04-13 16:00:45 +09:00
Dean Herbert
20eca9bf6a Refactor TestSceneRankRangePill to not depend on TestMultiplayerClient 2022-04-12 19:39:24 +09:00
Dean Herbert
b51abfc722 Fix ScoreDownloadTracker matching on empty hash equality 2022-04-12 18:22:23 +09:00
Dean Herbert
09d560c93e Add test coverage of spectator requests 2022-04-11 19:27:14 +09:00
Dean Herbert
34457b4742 Expose mocked members as virtual on Multiplayer and SpectatorClient 2022-04-11 19:04:15 +09:00
Dean Herbert
ae1e126837 Make HighlightMessage implicitly show chat overlay 2022-04-09 00:30:28 +09:00
Dan Balasescu
9ea6f9b1fe Remove some incorrectly-firing asserts 2022-04-08 21:44:44 +09:00
Dan Balasescu
62f5409191
Merge pull request #17725 from peppy/multiplayer-hotifx
Avoid multiplayer crashes when events arrive in unexpected order
2022-04-08 20:23:37 +09:00
Dean Herbert
5c571996d8 Avoid multiplayer crashes when events arrive in unexpected order
Intended to be a temporary fix for
https://github.com/ppy/osu/issues/17713 while a more permanent solution
is established. A proper fix is actually quite simple, but updating the
test to work with it is... *slightly* more complicated.

This hotfix will mean that if a `UserJoined` event arrives during the
unobserved window during room join (of the local user), the local user
still won't see the joining user, but the game won't crash as a result.
2022-04-08 17:55:47 +09:00
Dean Herbert
6bb8243212 Fix potential assert failure due to Room access from disconnection event 2022-04-08 17:41:03 +09:00
Dean Herbert
933a722cfc Remove secondary null checks which cannot exist (were on wrong thread) 2022-04-08 14:56:04 +09:00
Dean Herbert
64c63fe93a Move null check in JoinRoom on to update thread 2022-04-08 14:52:56 +09:00
Dean Herbert
d50f41225f Rename scheduleAsync to runOnUpdateThreadAsync 2022-04-08 14:43:53 +09:00
Dean Herbert
9ba99ed57d Ensure all access to MultiplayerClient.Room is on the update thread
This was an implicit requirement until now, but not well documented
everywhere. Adding this makes it much easier to understand the
requirement (and probably safer).
2022-04-08 14:42:56 +09:00
Dean Herbert
f795f77cf9 Add missing newline 2022-04-06 14:00:54 +09:00
Dean Herbert
c540810943
Merge branch 'master' into fix-multiplayer-unobserved 2022-04-06 11:33:10 +09:00
Dan Balasescu
6e6271d0c0 Fix "server-side" room playlist not updated
Remove unused using
2022-04-01 18:32:10 +09:00
Dan Balasescu
16d4544ff9 Prevent reloads when playlist item order changes 2022-04-01 17:06:37 +09:00
Dean Herbert
5b3eb2d6f4 Add helper class to handle firing async multiplayer methods 2022-03-31 19:27:45 +09: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
f92a31cd39
Merge pull request #17402 from smoogipoo/multiplayer-auto-countdown
Add multiplayer auto-start countdown timer
2022-03-25 20:31:14 +09:00
Dean Herbert
792e79265b Add ignore rule for new helper property 2022-03-25 15:46:27 +09:00
Dean Herbert
b1f0f89fdd Simplify AutoStart and Host checks 2022-03-25 15:41:01 +09:00
Dean Herbert
de4c04ef80 Fix non-matching json propert for AutoStartDuration 2022-03-25 15:34:33 +09:00
Dan Balasescu
0d88af19ae Fix local setting not being updated 2022-03-24 20:23:58 +09:00
Dan Balasescu
40eca0fbe2 Merge branch 'master' into multiplayer-auto-countdown 2022-03-24 18:11:51 +09:00
Dean Herbert
e889d93441 Add asserts of playlist being non-empty after client operations 2022-03-24 17:52:20 +09:00
Dan Balasescu
a83a90e675 Rename countdown Delay -> Duration 2022-03-23 15:21:16 +09:00
Dan Balasescu
f7c0047206 Send time remaining in countdowns instead 2022-03-23 15:19:43 +09:00
Dan Balasescu
d0fee53e1f Implement auto countdown timers
Change to using TimeSpan
2022-03-22 14:34:06 +09:00
Dan Balasescu
04f4e81852 Rename start countdown request 2022-03-18 21:05:19 +09:00
Dan Balasescu
72843a6797 Add support for starting/stopping countdowns 2022-03-18 14:33:09 +09:00
Dan Balasescu
3b938865a1 Add room structure for countdown timers 2022-03-18 14:31:57 +09:00
Dean Herbert
1814a325d8 Move GetSettingUnderlyingValue to a SettingSource extension method 2022-03-15 14:54:00 +09:00
Salman Ahmed
cc87563d57
Merge branch 'master' into chat-mention-highlight 2022-03-11 17:51:22 +03:00
Salman Ahmed
a31611bdec Improve channel switching flow in HighlightMessage 2022-03-10 23:07:15 +03:00
Salman Ahmed
8086f73451 Revert "Add functionality to switch to successfully joined channel"
This reverts commit c72e8a8b5e.
2022-03-10 23:07:15 +03:00
Salman Ahmed
c72e8a8b5e Add functionality to switch to successfully joined channel 2022-03-10 21:28:38 +03:00
Dan Balasescu
c61397cc22 Fix whitespace/inspection 2022-03-10 16:22:27 +09:00