Plextora
31d7c6a22e
Merge branch 'master' into colour-for-friend-lb
2025-01-14 05:57:44 -05:00
Dean Herbert
b4d054fdc0
Merge pull request #31444 from smoogipoo/friend-presence-2
...
Add notifications for when friends go online or offline
2025-01-14 18:58:19 +09:00
Dean Herbert
55ae0403d8
Ensure API state is Connecting
immediately on startup when credentials are present
...
Currently, there's a period where the API is `Offline` even though it is
about to connect (as soon as the `run` thread starts up).
This can cause any `Queue`d requests to fail if they arrive too early.
To avoid this, let's ensure the `Connecting` state is set as early as
possible.
2025-01-14 18:18:53 +09:00
Dan Balasescu
156207d347
Remove unused using
2025-01-14 17:54:40 +09:00
Dan Balasescu
51c7c218bf
Simplify operations on local list
2025-01-14 17:52:26 +09:00
Dean Herbert
f6073d4ac0
Ensure API starts up with LocalUser
in correct state
...
I noticed in passing that in a very edge case scenario where the API's
`run` thread doesn't run before it is loaded into the game, something
could access it and get a guest `LocalUser` when the local user actually
has a valid login.
Put another way, the `protected HasLogin` could be `true` while
`LocalUser` is `Guest`.
I think we want to avoid this, so I've moved the initial set of the
local user earlier in the initialisation process.
If this is controversial in any way, the PR can be closed and we can
assume no one is ever going to run into this scenario (or that it
doesn't matter enough even if they did).
2025-01-14 17:43:43 +09:00
Dean Herbert
3c913c9f6d
Merge branch 'master' into colour-for-friend-lb
2025-01-14 16:34:05 +09:00
Dean Herbert
94ea003d90
Update game ScrollContainer
usage in line with framework changes
...
See https://github.com/ppy/osu-framework/pull/6467 .
2025-01-11 01:42:59 +09:00
Dan Balasescu
7268b2e077
Add separate path for friend presence notifications
...
It proved to be too difficult to deal with the flow that clears user
states on stopping the watching of global presence updates. It's not
helped in the least that friends are updated via the API, so there's a
third flow to consider (and the timings therein - both server-spectator
and friends are updated concurrently).
Simplest is to separate the friends flow, though this does mean some
logic and state duplication.
2025-01-09 17:31:01 +09:00
Dan Balasescu
f4d83fe685
Keep friend states when stopping watching global activity
2025-01-09 13:23:16 +09:00
Dan Balasescu
9c05837b3a
Change to using a 'FreeStyle' boolean
2025-01-08 18:47:01 +09:00
Dean Herbert
d5f2bdf6cd
Appease message pack new inspections
2025-01-08 03:13:29 +09:00
Dan Balasescu
45e0adcd25
Add config option
2025-01-07 19:32:30 +09:00
Dan Balasescu
51b62a6d8e
Display notification on friend presence changes
2025-01-07 19:12:33 +09:00
Dean Herbert
4f1a6b4688
Always show dialog when clicking supporter icon before opening browser
...
I managed to do this by accident three times today while testing using
the dashboard display, so it's time to action on it.
Touched on in
https://github.com/ppy/osu/discussions/30740#discussioncomment-11345996 .
Was also mentioned recently in discord or another discussion explicitly
but I can't find that.
2025-01-06 17:51:04 +09:00
Dan Balasescu
0093af8f55
Rewrite everything to better support spectator server messaging
2024-12-25 22:24:21 +09:00
Dan Balasescu
b4f35f330c
Use online ruleset_id to build local score models
2024-12-24 20:13:42 +09:00
Dan Balasescu
c88e906cb6
Add some comments
2024-12-24 19:40:06 +09:00
Plextora
47afab8a32
Use yellow instead of pink
2024-12-23 12:47:50 -05:00
Dan Balasescu
638d959c5c
Initial support for free style selection
2024-12-23 20:12:25 +09:00
Plextora
b3056d6114
Change score background to pink if user is friended
2024-12-22 16:58:00 -05:00
Dean Herbert
09fc30e377
Hide !mp
commands from tournament streaming chat
2024-12-16 17:39:27 +09:00
Bartłomiej Dach
d8d5a00f3b
Merge branch 'master' into filter-playing-rooms
2024-12-12 13:06:22 +09:00
Dean Herbert
a3998fbd52
Merge branch 'master' into better-room-status
2024-12-11 18:06:55 +09:00
Bartłomiej Dach
3352571f2a
Add ability to filter out currently playing rooms
...
Addresses https://osu.ppy.sh/community/forums/topics/2013293?n=1 .
2024-12-11 13:24:08 +09:00
Bartłomiej Dach
637fe07b31
Rename Room{Status -> Mode}Filter
...
I need the "status" term free for an upcoming change. And web calls this
parameter "mode" as well:
642e973f91/app/Models/Multiplayer/Room.php (L184-L199)
so it works in my head.
2024-12-11 12:36:42 +09:00
Dan Balasescu
9abb92a8d6
Add BeatmapSetId to playlist items
2024-12-10 23:00:42 +09:00
Huo Yaoyuan
68f4fa5a57
Turn off CA1507
2024-12-03 00:00:31 +08:00
Huo Yaoyuan
fa3c95c296
Merge branch 'master'
2024-11-30 01:07:08 +08:00
Huo Yaoyuan
fced254594
Enable selected rules for usage
2024-11-28 22:33:03 +08:00
Bartłomiej Dach
2e6f43a75d
Merge branch 'master' into close-playlists
2024-11-28 14:01:36 +01:00
Huo Yaoyuan
13d7c6a2d8
Enable recommended rules for maintainability
2024-11-28 20:41:41 +08:00
Bartłomiej Dach
98a156ae2d
Merge pull request #30874 from peppy/chat-order
...
Sort public chat channels alphabetically, private channels based on recent messages
2024-11-28 12:46:14 +01:00
Dean Herbert
573aaf6637
Merge pull request #27128 from frenzibyte/user-statistics-provider
...
Introduce `UserStatisticsProvider` component and add support for respecting selected ruleset
2024-11-27 13:13:47 +09:00
Dan Balasescu
af0c6fc51b
Add Room.HasEnded
helper method
2024-11-26 21:09:28 +09:00
Salman Alshamrani
42c68ba43e
Add inline comment
2024-11-26 01:28:58 -05:00
Salman Alshamrani
b76460f100
Schedule the thing
...
Queuing up requests on change to `api.LocalUser` is bad because the API
state is updated after `LocalUser` is updated, therefore we have to
schhhhhedullllllllleeeeeeeeeeeeeeee.
2024-11-26 01:26:44 -05:00
Dean Herbert
17347563ee
Fix incorrect null handling
2024-11-26 13:25:57 +09:00
Bartłomiej Dach
0a3f3c3210
Add guard against fetching statistics for non-legacy rulesets
2024-11-25 13:14:22 +01:00
Bartłomiej Dach
1410e8837a
Merge branch 'master' into better-room-status
2024-11-25 09:48:40 +01:00
Salman Alshamrani
631bfadd68
Replace event subscription with callback in UserStatisticsWatcher
...
Also no longer cancels previous API requests as there's no actual need to do it.
2024-11-24 04:11:13 -05:00
Salman Alshamrani
956da0383f
Merge branch 'master' into multiplayer-remove-expired-item-removal
2024-11-23 22:19:21 -05:00
Dan Balasescu
82a63228de
Improve handling of multiplayer room status
2024-11-22 21:21:04 +09:00
Bartłomiej Dach
8b68859d9d
Fix Room.CopyFrom()
skipping a field
...
Was making the close button not display when creating a room anew.
2024-11-22 09:57:57 +01:00
Dan Balasescu
39504c348d
Cleanup CopyFrom()
method
...
Though the code appears slightly different, it should be semantically
equivalent. APIUser equality is implemented on `Id` and `Host` should
never transition from non-null to null.
2024-11-22 17:22:30 +09:00
Dan Balasescu
e59ac9e7c8
No longer remove expired playlist items from Room
model
2024-11-22 17:19:26 +09:00
Bartłomiej Dach
3b2f43012e
Merge branch 'master' into close-playlists
2024-11-22 09:02:41 +01:00
Dan Balasescu
f738fb2a89
Populate rooms as soon as they're joined
2024-11-21 23:48:04 +09:00
Dan Balasescu
7018672275
Fix playlist room status resetting on enter
2024-11-21 18:11:41 +09:00
Bartłomiej Dach
a679f0736e
Add ability to close playlists within grace period after creation
2024-11-20 12:36:12 +01:00
Dean Herbert
6fba6de4dc
Merge branch 'master' into multiplayer-remove-cmc-and-composite
2024-11-20 17:24:55 +09:00
Salman Alshamrani
0b52080a52
Handle logged out user
2024-11-18 06:47:22 -05:00
Salman Alshamrani
74daf85e48
Replace bindable with an event
2024-11-18 06:47:22 -05:00
Salman Alshamrani
caf56afba6
Fix various test failures
2024-11-17 19:13:29 -05:00
Salman Alshamrani
4a628287e2
Decouple game-wide ruleset bindable and refactor LocalUserStatisticsProvider
...
This also throws away the logic of updating
`API.LocalUser.Value.Statistics`. Components should rely on
`LocalUserStatisticsProvider` instead for proper behaviour and ability
to update on statistics updates.
2024-11-17 18:13:37 -05:00
Dan Balasescu
db7def9d34
Remove IDependencyInjectionCandidate
interface from Room
2024-11-15 16:05:06 +09:00
Dan Balasescu
34c0f72dd6
Make Room.Playlist
non-bindable
2024-11-15 15:51:01 +09:00
Dan Balasescu
b16edbbf52
Make Room.RecentParticipants
non-bindable
2024-11-15 15:25:43 +09:00
Dan Balasescu
dc5337d771
Make Room.UserScore
non-bindable
2024-11-15 14:42:46 +09:00
Dan Balasescu
c4f8fd1832
Make Room.DifficultyRange
non-bindable
2024-11-15 14:42:46 +09:00
Dan Balasescu
487a010b12
Make Room.PlaylistItemStats
non-bindable
2024-11-15 14:42:46 +09:00
Dan Balasescu
80b3e330a6
Make Room.ChannelId
non-bindable
2024-11-15 14:42:46 +09:00
Dan Balasescu
6c84e425f8
Make Room.MaxAttempts
non-bindable
2024-11-15 14:42:46 +09:00
Dan Balasescu
0ceaafe731
Make Room.Duration
& Room.StartDate
& Room.EndDate
non-bindable
2024-11-15 14:42:45 +09:00
Dan Balasescu
89de4f0f87
Make Room.AutoStartDuration
non-bindable
2024-11-15 14:42:45 +09:00
Dan Balasescu
b8bae30b66
Make Room.ParticipantCount
& Room.MaxParticipants
non-bindable
2024-11-15 14:42:45 +09:00
Dan Balasescu
f001cce24a
Make Room.AutoSkip
non-bindable
2024-11-15 14:42:18 +09:00
Dan Balasescu
ec5be6dbc3
Make Room.Password
& Room.HasPassword
non-bindable
2024-11-15 14:42:18 +09:00
Dan Balasescu
198681e644
Make Room.QueueMode
non-bindable
2024-11-15 14:42:18 +09:00
Dan Balasescu
7e3e5208f0
Make Room.Availability
non-bindable
2024-11-15 14:42:18 +09:00
Dan Balasescu
5d4838a08b
Make Room.Status
non-bindable
2024-11-15 14:42:18 +09:00
Dan Balasescu
81e4cb348f
Make Room.Type
non-bindable
2024-11-15 14:42:18 +09:00
Dan Balasescu
bde7b8e610
Make Room.Category
non-bindable
2024-11-15 14:42:18 +09:00
Dan Balasescu
8694f7e1cc
Make Room.Host
non-bindable
2024-11-15 14:42:17 +09:00
Dan Balasescu
6160df1586
Make Room.Name
non-bindable
2024-11-15 14:29:15 +09:00
Dan Balasescu
99762da7b8
Make RoomID non-bindable
...
Most important changes are to `RoomSubScreen` and `PlaylistsRoomSubScreen`, because those are the only two cases that now bind to the event instead.
2024-11-13 16:28:54 +09:00
Dan Balasescu
db025d81ee
Reorder public property vs private field
2024-11-13 15:50:01 +09:00
Dean Herbert
0760451f3f
Merge branch 'master' into user-statistics-provider
2024-11-13 15:21:55 +09:00
Dan Balasescu
72564b5c98
Make CurrentPlaylistItem
not a bindable
2024-11-12 18:17:24 +09:00
Dean Herbert
54288c350a
Merge pull request #30525 from smoogipoo/multiplayer-refactor
...
Replace `MultiplayerRoomComposite` with local bindings
2024-11-07 19:53:44 +09:00
Dan Balasescu
788ecc1e7b
Replace MultiplayerRoomComposite with local bindings
2024-11-06 15:31:27 +09:00
Bartłomiej Dach
2bd12e14db
Merge pull request #30467 from cdwcgt/friend-add
...
Add the ability to add/remove friends in `UserProfileHeader`
2024-11-05 10:25:27 +01:00
cdwcgt
c576fd8448
add AddFriendResponse
2024-11-05 15:55:42 +08:00
Bartłomiej Dach
6a1893ff3f
Add context menu option to copy link to an online score
...
I feel like this may become useful soon enough to help diagnose weird
issues.
2024-11-04 13:59:48 +01:00
Bartłomiej Dach
51f26993fa
Extract "copy link" text to common localisation
2024-11-04 13:59:48 +01:00
cdwcgt
fbe6077ec2
rename FriendDeleteRequest
to DeleteFriendRequest
2024-11-01 19:17:25 +08:00
cdwcgt
21b1c799f3
rename FriendAddRequest
to AddFriendRequest
2024-11-01 19:16:56 +08:00
cdwcgt
729c7f11a9
add StringEnumConverter
for RelationType
2024-11-01 19:15:20 +08:00
cdwcgt
0b2f4facac
add test
2024-11-01 14:05:24 +08:00
cdwcgt
69b5bd3b50
Fix existing friend logic
2024-11-01 12:53:13 +08:00
cdwcgt
bf53833b7b
add API model and request
2024-11-01 12:52:37 +08:00
Bartłomiej Dach
7e3564cb4a
Bring back matching by filename when performing online metadata lookups
2024-10-30 10:25:20 +01:00
Bartłomiej Dach
776fabd77c
Only use MD5 when performing metadata lookups
...
Both online and offline using the cache.
The rationale behind this change is that in the current state of
affairs, `TestPartiallyMaliciousSet()` fails in a way that cannot be
reconciled without this sort of change.
The test exercises a scenario where the beatmap being imported has an
online ID in the `.osu` file, but its hash does not match the online
hash of the beatmap. This turns out to be a more frequent scenario than
envisioned because of users doing stupid things with manual file editing
rather than reporting issues properly.
The scenario is realistic only because the behaviour of the endpoint
responsible for looking up beatmaps is such that if multiple parameters
are given (e.g. all three of beatmap MD5, online ID, and filename), it
will try the three in succession:
f6b341813b/app/Http/Controllers/BeatmapsController.php (L260-L266)
and the local metadata cache implementation reflected this
implementation.
Because online ID and filename are inherently unreliable in this
scenario due to being directly manipulable by clueless or malicious
users, neither should not be used as a fallback.
2024-10-30 08:12:30 +01:00
Salman Alshamrani
979065c421
Reorder code slightly
2024-10-26 23:09:17 -04:00
Salman Alshamrani
44dd81363a
Make UserStatisticsWatcher
fully rely on LocalUserStatisticsProvider
2024-10-25 03:15:41 -04:00
Salman Alshamrani
2fd495228c
Fix post-merge errors
2024-10-25 02:38:01 -04:00
Salman Alshamrani
701fb565b1
Merge branch 'master' into user-statistics-provider
2024-10-25 01:35:24 -04:00
Dean Herbert
c15490ed58
Merge pull request #30146 from bdach/lookup-users-endpoint
...
Fix currently online display hitting rate limits
2024-10-22 19:24:14 +09:00
Dean Herbert
3158338fe4
Merge pull request #30137 from bdach/send-mods-in-frame-headers
...
Send mods in spectator frame headers
2024-10-22 19:23:21 +09:00
Dean Herbert
187fa5eccd
Use full async
flow rather than ContinueWith
2024-10-22 18:48:01 +09:00