1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-15 09:42:54 +08:00
Commit Graph

34149 Commits

Author SHA1 Message Date
Adam Baker
7ced84b7ef Replace switch statement with ForModType
In order to make `highlightedColour` dependent on the mod type color, the color is converted to an `osu.Framework.Graphics.Colour4` and calls `Lighten`.
2022-07-08 03:23:58 -05:00
Dean Herbert
e64b2b1682 Assert that test is run headless when required 2022-07-08 15:45:01 +09:00
Dean Herbert
eab3eba70e Move event handlers to LoadComplete 2022-07-08 15:09:16 +09:00
Dean Herbert
32c77ddf71 Avoid triggering SeasonalBackgroundChanged unless actually required 2022-07-08 15:07:30 +09:00
Dan Balasescu
0bc332e90b
Merge pull request #19029 from peppy/fix-skin-import-duplicate
Fix skins potentially being duplicated on batch import
2022-07-08 14:18:14 +09:00
Adam Baker
89f1c75f7a Update mod icon colors 2022-07-07 21:57:18 -05:00
Dean Herbert
1e159eb328
Add back fade to black duration
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2022-07-08 10:43:50 +09:00
Salman Ahmed
63a06afab2 Add missing license header 2022-07-08 01:59:27 +03:00
Salman Ahmed
67fa15f231 Remove no longer required context menu container in ParticipantsList 2022-07-08 01:42:55 +03:00
Salman Ahmed
7b08501eaf Cover online-play room screens with context menu containers 2022-07-08 01:42:11 +03:00
Salman Ahmed
1d0f2e359a Add collection context menu to room playlist items 2022-07-08 01:40:53 +03:00
Salman Ahmed
a94fb62be3 Split collection toggle menu item to own class 2022-07-08 01:39:45 +03:00
Salman Ahmed
07a08d28c6 Rename parameter and default to 0 2022-07-07 23:31:06 +03:00
Dean Herbert
c53dd4a703 Fix editor saving not updating BeatmapSetInfo's hash 2022-07-08 02:33:14 +09:00
Dean Herbert
15d070668d Move intro screen background to base implementation and use colour fading 2022-07-08 02:12:01 +09:00
Dean Herbert
216150b52d Avoid always loading new background at MainMenu
This was meant to be an optimisation to allow the background to load
while the intro is playing, but as the current default intro loads a
background itself, this was rarely the case and also counter-productive
as it would bypass the equality check and start a second load sequence.
2022-07-08 02:12:01 +09:00
Dean Herbert
789904ccd1 Avoid reloading background unnecessariyl when not yet loaded 2022-07-08 02:12:01 +09:00
Dean Herbert
b83073c2e9 Fix SeasonalBackgroundLoader triggering a background reload when not providing backgrounds 2022-07-08 02:12:01 +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
cf1da1dd18 Fix skins potentially being duplicated on batch import
Resolves https://github.com/ppy/osu/discussions/19024#discussioncomment-3099200
2022-07-07 22:39:07 +09:00
Dan Balasescu
f109e510ce
Merge branch 'master' into metadata-client 2022-07-07 19:45:52 +09:00
Dan Balasescu
7086779cf4
Merge pull request #19026 from peppy/async-track-operations
Use fire-and-forget async operations on global track
2022-07-07 19:45:03 +09:00
Dan Balasescu
5e3c6d6e56
Merge pull request #19028 from peppy/add-skin-keyword
Allow searching for "skins" to find current skin setting
2022-07-07 19:40:23 +09:00
Dean Herbert
d88fd8a5b0 Allow searching for "skins" to find current skin setting 2022-07-07 18:26:04 +09:00
Dean Herbert
ac216d94a8 Fix transaction not being disposed 2022-07-07 18:15:38 +09:00
Dean Herbert
b5c703b62c Remove unused using statement 2022-07-07 17:59:55 +09:00
Dean Herbert
e2c4c94993 Simplify BeatmapUpdater transaction handling using nested transaction support 2022-07-07 17:37:46 +09:00
Dean Herbert
79bed0abdf Merge branch 'realm-nested-writes' into metadata-client 2022-07-07 17:37:06 +09:00
Dean Herbert
5197d0fa9e Add automatic transaction handling to realm helper methods 2022-07-07 17:36:25 +09:00
Dan Balasescu
d4c539687e
Merge pull request #19022 from peppy/better-file-loading-exceptions
Add local handling of cases where a beatmap's file cannot be found on disk
2022-07-07 17:21:19 +09:00
Dean Herbert
7ef03dd2cb Use fire-and-forget async operations on global track
This avoids any blocking overhead caused by a backlogged audio thread.
Test seem to pass so might be okay?

Note that order is still guaranteed due to the `ensureUpdateThread`
queueing system framework-side.
2022-07-07 17:15:45 +09:00
Dean Herbert
45c5b7e7dd Update framework 2022-07-07 17:13:16 +09:00
Dean Herbert
1a41d3ef20 Allow PlayerTestScene to import the beatmap it's using 2022-07-07 16:42:36 +09:00
Dean Herbert
9d730f8440 Fix custom rulesets not importing scores at all
Replaces the error with the ability to import, minus replays.

Closes https://github.com/ppy/osu/issues/17350 (arguably, but let's go with it for now).
2022-07-07 14:49:23 +09:00
Dean Herbert
e1b434b5dc Fix song select placeholder not showing convert hint for custom rulesets 2022-07-07 14:46:51 +09:00
Dean Herbert
e81cebf27d Change storyboard parsing logic to not completely fail if only .osb read fails
Changes to allow the storyboard to exist if only the `.osu` is
available. Reads better IMO.
2022-07-07 14:33:20 +09:00
Dean Herbert
c4b6893709 Add local handling of cases where a beatmap's file cannot be found on disk 2022-07-07 14:29:19 +09:00
Salman Ahmed
9115072917 Fix flaky tests not running at all with environment variable set 2022-07-07 04:24:10 +03:00
Dan Balasescu
b9acdcdbe2
Merge pull request #19014 from peppy/line-buffered-reader-simplification
Enable NRT and simplify `LineBufferedReader`
2022-07-06 20:27:04 +09:00
Dean Herbert
c2f1069073 Avoid usage of finally in potentially hot path 2022-07-06 19:55:51 +09:00
Dean Herbert
01bc6e5cb7 Revert old behaviour of ReadToEnd 2022-07-06 19:55:51 +09:00
Dan Balasescu
6340caf27d
Merge pull request #19018 from peppy/memory-caching-component-statistics
Add statistics display for `MemoryCachingComponent`s
2022-07-06 19:20:36 +09:00
Dan Balasescu
9f76118ee0
Merge pull request #19015 from peppy/improve-beatmap-parsing-performance
Fix `BeatSyncedContainer` unintentionally blocking on beatmap load
2022-07-06 18:41:07 +09:00
Dean Herbert
a1b6ec60c8 Add statistics display for MemoryCachingComponents
Never sure if these are working as they should (or how well they are
working). This helps quite a bit.
2022-07-06 18:38:40 +09:00
Dean Herbert
12d396a513 Use -1 to specify default buffer size 2022-07-06 15:43:35 +09:00
Dean Herbert
ae49aafde2 Fix BeatSyncedContainer unintentionally blocking on beatmap load 2022-07-06 14:58:06 +09:00
Dean Herbert
a52ea3cabe Enable NRT and simplify LineBufferedReader 2022-07-06 14:57:56 +09:00
Dean Herbert
7053a8507b
Merge pull request #18993 from Joehuu/fix-personal-best-delete-context-menu
Fix personal best score showing delete option on context menu
2022-07-06 14:53:35 +09:00
Dean Herbert
6fb00d84f9 Apply NRT to LoginForm and remove nullability of IAPIProvider 2022-07-06 01:29:00 +09:00
Dean Herbert
3a68f386a8 Add forgotten password link to login form 2022-07-06 01:25:04 +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
Dean Herbert
85e589f863
Merge pull request #19005 from Susko3/initial-cookie
Allow MIDI and joysticks to trigger the osu! cookie on the initial screen
2022-07-05 19:26:56 +09:00
Susko3
4c3789ec5d Split into a function 2022-07-05 11:15:37 +02:00
Dean Herbert
33db508301 Add note regarding why the realmRetrievalLock return is done on the async thread 2022-07-05 16:23:10 +09:00
Dean Herbert
5adec2c738 Ensure blocking restoration only completes after update callback work is completed 2022-07-05 14:39:14 +09:00
Dean Herbert
1b98936328 Rename realm ThreadLocal to better convey what it's doing
Every time I looked at this code I have to re-learn what it's doing.
Changing these variable names should help quite a bit.
2022-07-05 13:38:25 +09:00
Susko3
bb0f212448 Trigger the initial cookie with midi and joysticks 2022-07-05 00:38:18 +02:00
Dean Herbert
506409a9c4 Fix realm backup creation failing when run from RealmAccess constructor
At the point of construction, we are not on the update thread, but it
doesn't really matter at this point because there's no other usages.
2022-07-04 16:45:23 +09:00
Dean Herbert
64edc6888d Add test coverage of corrupt realm creating backup 2022-07-04 16:45:23 +09:00
Dean Herbert
925d7b1fdc Update framework 2022-07-04 15:01:01 +09:00
Dan Balasescu
65917fbb99
Merge pull request #18990 from andy840119/remove-nullable-disable-in-the-ruleset-filter
Remove nullable disable annotation in the ruleset filter.
2022-07-04 13:46:31 +09:00
Joseph Madamba
df152421a8 Fix personal best score showing delete option on context menu 2022-07-03 10:23:17 -07:00
Dean Herbert
e4bf2224c6 Update framework 2022-07-03 23:16:51 +09:00
andy840119
59e3d4b9e5 Remove the nullable disable annotation in the Ruleset.Filter namespace. 2022-07-03 21:00:54 +08:00
Dan Balasescu
9bf91835b6
Merge pull request #18962 from peppy/slider-range-control
Move star difficulty filter to song select
2022-07-03 21:58:00 +09:00
Dan Balasescu
385bd5a1b2
Merge pull request #18965 from peppy/mark-flaky-tests
Mark, document and silence remaining flaky tests on standard CI runs
2022-07-03 21:41:14 +09: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
Dan Balasescu
724fd19038 Remove nullable disables 2022-07-03 21:15:13 +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
Dean Herbert
052a786eff Only show hover effect on one nub at a time 2022-07-03 03:06:03 +09:00
Dean Herbert
7d8ea5e286 Remove unnecessary proxying 2022-07-03 02:59:10 +09:00
andy840119
0a1543c6e8 Use AsNonNull() instead. 2022-07-02 19:48:32 +08:00
Dean Herbert
2a1777fa85
Merge branch 'master' into fix-player-star-difficulty-display 2022-07-02 18:57:46 +09:00
Salman Ahmed
9b833524c0
Merge branch 'master' into add-realm-blocking-logging 2022-07-02 12:41:36 +03:00
Dean Herbert
b626135940 Fix dragging slider bars on nub not performing correctly relative movement 2022-07-02 17:49:38 +09:00
Dean Herbert
24cd845d1b Update framework 2022-07-02 17:18:50 +09:00
Salman Ahmed
e28ee8bc7a Count time spent upwards to display attempts correctly 2022-07-02 10:46:52 +03:00
Dean Herbert
93809a92d4 Fix clashing error messaging during realm block operations 2022-07-02 16:30:04 +09:00
Salman Ahmed
a4b9097709
Merge branch 'master' into mod-overlay-appear-sfx 2022-07-02 09:28:24 +03:00
Salman Ahmed
19d300e311 Fix player loader not accepting star difficulty updates after display 2022-07-02 09:17:38 +03: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
andy840119
ea573f314e Remove the nullable disable annotation in the Rulesets.Replays namespace in the osu.game project. 2022-07-02 13:08:25 +08:00
andy840119
fa5f7c1a00 Remove the nullable disable annotation in the Replays namespace. 2022-07-02 13:03:01 +08:00
Dean Herbert
2cc9c579d4
Merge pull request #18969 from smoogipoo/fix-multiplayer-cross-pollution
Fix cross-pollution of server- and client-side multiplayer objects in tests
2022-07-02 13:18:35 +09:00
Dean Herbert
9e30c1de3e
Merge branch 'master' into mod-overlay-appear-sfx 2022-07-02 12:59:04 +09:00
Dean Herbert
a03abc747b Tidy up comments and simplify bounding box centre logic 2022-07-02 12:58:34 +09:00
Dean Herbert
426c53fe65 Fix potential null being sent to extension method which doesn't support it 2022-07-02 12:50:28 +09:00
Dean Herbert
1fd9c64803 Change song select FooterButton sound 2022-07-02 12:48:33 +09:00
Dean Herbert
4fd47b5fa0 Add more verbose logging to realm blocking process 2022-07-02 12:36:56 +09: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
Dean Herbert
623a99d53a Update resources 2022-07-02 11:58:45 +09:00
Jamie Taylor
9d28d5f8ee
Update SFX for mod overlay show/hide 2022-07-01 20:43:12 +09:00
Dan Balasescu
3b1842a2c2
Merge pull request #18835 from peppy/beatmap-update-flow
Split out beatmap update tasks to `BeatmapUpdater` and invoke from editor save flow
2022-07-01 20:28:04 +09:00
Dean Herbert
0cf58646f4
Merge pull request #18803 from Joehuu/fix-overlay-header-tab-item-localisable-string
Fix profile header tab items not localising
2022-07-01 19:37:57 +09:00
Dean Herbert
6baccad058
Merge pull request #18821 from ggliv/locked-room-filter
Add room access type filter to multiplayer lounge screen
2022-07-01 19:37:43 +09:00
Dan Balasescu
084a65578c Always clone messages incoming from client-side 2022-07-01 19:36:37 +09:00
Dan Balasescu
37acec1952 Isolate client's LocalUser from TestMultiplayerClient 2022-07-01 19:23:41 +09:00
Dan Balasescu
b64c0d011c Isolate client's Room from TestMultiplayerClient 2022-07-01 19:23:25 +09:00
Dan Balasescu
0be858b5bf Rename APIRoom -> ClientAPIRoom, remove unused asserts 2022-07-01 19:21:59 +09:00
Dan Balasescu
1c2ffb3bc4 Fix server-side objects being sent to client 2022-07-01 19:21:53 +09:00
Dean Herbert
b829884861
Merge pull request #18963 from peppy/more-placeholder-suggestions
Add difficulty filter reset to song select "no results" suggestions
2022-07-01 17:55:23 +09:00
Dean Herbert
b460a52faf
Merge pull request #18966 from smoogipoo/fix-flaky-multiplayer-test
Fix test sometimes referencing old ModSelect object
2022-07-01 17:55:06 +09:00
Salman Ahmed
5880b824d0 Simplify description logic for overlay tab items 2022-07-01 11:30:51 +03:00
Dean Herbert
e213c1a4ef Rename enum to explicitly mention it is a filter 2022-07-01 17:27:03 +09:00
Salman Ahmed
7f9ef6c23f Merge branch 'master' into fix-overlay-header-tab-item-localisable-string 2022-07-01 11:27:00 +03:00
Dean Herbert
9911c6cbf0
Merge branch 'master' into locked-room-filter 2022-07-01 17:17:01 +09:00
Salman Ahmed
3bca439c4f
Merge branch 'master' into more-placeholder-suggestions 2022-07-01 10:52:32 +03:00
Dan Balasescu
58c9bb031f Apply PR reviews/fixes 2022-07-01 16:51:15 +09:00
Dan Balasescu
c22e77e481 Fix test sometimes referencing old ModSelect object 2022-07-01 16:46:27 +09:00
Dean Herbert
615c3234d8 Remove non-required NRT hint 2022-07-01 16:25:21 +09:00
Dean Herbert
c4f1660841 Rename ENVVAR in line with previous one (OSU_TESTS_NO_TIMEOUT) 2022-07-01 16:20:34 +09:00
Dean Herbert
1777a6d24a Add attribute to retry flaky tests on normal CI runs 2022-07-01 16:06:18 +09:00
Dean Herbert
58e25a3a01 Fix potential crash in BeatmapLeaderboard during rapid refresh operations 2022-07-01 15:42:35 +09:00
Dan Balasescu
409224560f
Merge pull request #18874 from peppy/realm-fix-async-write-after-disposal
Ensure all async writes are completed before realm is disposed
2022-07-01 15:29:01 +09:00
Dean Herbert
3e0f4e7609 Add test coverage of difficulty filter reset 2022-07-01 15:28:55 +09:00
Dean Herbert
f3af612133 Suggest removing difficulty filter if no matches found at song select 2022-07-01 15:18:04 +09:00
Dean Herbert
545df0a8e8 Display difficulty on nub 2022-07-01 15:17:26 +09:00
Dean Herbert
cb9947b1c9 Align song select components a bit better 2022-07-01 15:17:12 +09:00
Dean Herbert
32139ac13f Tidy up implementation and add basic visual test 2022-07-01 15:16:58 +09:00
Dean Herbert
d54f7fc728 Move slider range control to song select 2022-07-01 14:41:36 +09:00
Dean Herbert
3785027284 Update OsuSliderBar colours to not use transparency 2022-07-01 14:41:36 +09:00
Dan Balasescu
42d56aa640
Merge pull request #18958 from andy840119/remove-nullable-disable-in-the-extension
Remove nullable disable annotation in the extension namespace.
2022-07-01 13:52:12 +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
andy840119
a5b1f1a688 mark the string as nullable. 2022-06-30 23:23:14 +08:00
andy840119
26de34da84 Remove the nullable disable annotation. 2022-06-30 23:20:40 +08:00
andy840119
e50e0f7339 Remove the nullable disable annotate. 2022-06-30 23:05:09 +08:00
cdwcgt
33209ecd25
remove useless value change 2022-06-30 19:51:58 +09:00
Dean Herbert
447b496eff
Merge branch 'master' into realm-fix-async-write-after-disposal 2022-06-30 19:07:15 +09:00
Dean Herbert
2a73210865 Add xmldoc and update parameter naming for MemoryCachingComponent.Invalidate flow 2022-06-30 17:17:06 +09:00
Dean Herbert
aab4dcefbd Remove unnecessary invalidation handling flow 2022-06-30 17:13:26 +09:00
Dean Herbert
0698471627 Move BeatmapOnlineLookupQueue to inside BeatmapUpdater 2022-06-30 17:03:19 +09:00
Dean Herbert
ef42c6ecdf Add missing xmldoc 2022-06-30 16:51:31 +09:00
Dean Herbert
e34c2f0aca Remove unnecessary nullable-enable 2022-06-30 16:47:26 +09:00
Dean Herbert
82134ad1a6 Allow null parameter to GetWorkingBeatmap for now 2022-06-30 16:46:28 +09:00
Dean Herbert
98938821e5 Merge branch 'master' into beatmap-update-flow 2022-06-30 16:44:17 +09:00
Dean Herbert
356c0501ec Guard again potential nulls in RealmNamedFileUsage
Hopefully help in figuring out https://sentry.ppy.sh/organizations/ppy/issues/3679/?project=2&query=user%3A%22id%3A10078484%22
2022-06-30 15:40:57 +09:00
Dean Herbert
78d86fd3ff Fix PerformWrite not rolling back transaction on exception 2022-06-30 15:15:09 +09:00
Dean Herbert
e89f220e9a
Merge pull request #18949 from smoogipoo/fix-flaky-star-display-test
Ensure PlaylistItem's beatmap is not null
2022-06-30 15:15:06 +09:00
Dan Balasescu
c6520de749 Ensure PlaylistItem beatmap is not null 2022-06-30 14:24:49 +09:00
Dan Balasescu
edc4ace17e Attach DT with NC, SD with PF, and Cinema with Autoplay 2022-06-30 11:52:30 +09:00
Dean Herbert
582175c3a4 Update framework 2022-06-29 22:57:52 +09:00
cdwcgt
fd0d8b1ce3
Add button state, fix async issues, watch replay method
Most borrowed from `ReplayDownloadButton`
2022-06-29 22:50:47 +09:00
Dean Herbert
7cb4e32c17 Add one more lock to appease CI 2022-06-29 22:45:19 +09:00
Dean Herbert
a3b4a515fc Merge branch 'master' into realm-fix-async-write-after-disposal 2022-06-29 22:39:05 +09:00
Dean Herbert
18d465eff7 Guard against NaN star difficulty results 2022-06-29 21:02:29 +09:00