Supersedes https://github.com/ppy/osu/pull/32817.
The messaging of the failure to the user is maybe not the cleanest, but
I'm not sure it's worth putting time in to improve it?
Closes https://github.com/ppy/osu/issues/32825.
Tested manually to fix the issue. Setting up test coverage for this is
going to likely take over an hour compared to the 30 second fix, so
please advise if required. I couldn't find any existing tests which
perform this flow.
This aims to bring some conformity to naming to make it easier to
understand component structure for new components.
Renames are pulled out of the song select v2 changes and are more
relevant there due to many new classes being added.
- `V2` suffix is dropped, with v2 components being moved to a relevant V2 namespace.
- Related classes have a prefix of the area they are used.
- Experimenting with using partial/nested classes in the song select v2 implementation.
Not committing to this yet but want to see how it plays out.
- Moved base carousel components to a generic namespace to avoid confusion with actual beatmap carousel implementation.
Saves having this defined in 20+ places. If we ever make any changes to
shear, it's 100% going to need to be applied to every usage (there will
never be a case of multiple different shears in the game).
Also fixes a mismatching definition in `ShearedNub`.
While usually we'd handle this locally by moving bind operations to
`LoadComponent`, this component was explicitly made to be used in
asynchronous scenarios (to allow cases like song select to coexist with
realm without adding huge compliexities to the classes locally).
So I think it makes sense to hide this as an implementation detail. The
locked segments should all be quite fast to run so I do not see a
performance issue with lock contention here.