Guest mappers are not shown correctly on multiple places in the game
Describe the bug: The beatmap info wedge map author when clicked sends you to the wrong profile.
This is due to recent API changes that affected BeatmapMetadata which is done in this pull request: https://github.com/ppy/osu-web/pull/7517. The user_id property now uses the difficulty owner set via beatmap discussions but the creator property still uses the beatmap set host.
A suggestion which may be worthwhile is instead of showing mapped by <creator>, it should instead show hosted by <host> and mapped by <creator>. However, the API endpoint responsible for fetching the beatmap metadata only returns the difficulty owner's ID and requires another lookup in the API.
To reproduce:
-
In beatmap discussions, change the most bottom-most (most difficult) difficulty owner to anyone else

-
If the beatmap already exists in lazer, delete it and restart the game.
-
Download the beatmap via the web, in-game, or import via stable.
I'll attempt at fixing this if I can be assigned in this issue.
Screenshots or videos showing encountered issue:

osu!lazer version: master
Logs: N/A
This is wrong in multiple places, so keep that in mind when looking into a fix (needs to be fixed in the local lookup too).
Seeing various reports on this across the years, I think it's good to prioritise it. Shouldn't take much effort anyway.
Another issue that stems from incorrect client-side handling of guest mappers is that in some cases it stops the "My Maps" grouping mode from working correctly. One reported case is https://osu.ppy.sh/community/forums/topics/2139456?n=1.
The database contains this garbage:
where 2 of the 4 difficulties have an invalid username for the mapper IDs. This then fails later at
https://github.com/ppy/osu/blob/03455ba683f35228fc4a58120892675922f52fc6/osu.Game/Screens/SelectV2/BeatmapCarouselFilterGrouping.cs#L424-L427
because beatmap.BeatmapSet!.Metadata.Author will arbitrarily pick one of the difficulties' metadata at random, meaning that if a guest difficulty gets picked there, the mapset won't be recognized as the local user's.