feat: Add new API controllers for progression events, room consumables, currencies, earnings distributions, screen share reports, subscription seasons, and UGC purchasables

- Implemented ProgressionEventsController to handle progression event retrieval and active events.
- Created RoomConsumablesController for listing and purchasing room consumables.
- Developed RoomCurrenciesController for managing room currencies, including creation, updates, and balance retrieval.
- Added RoomEarningsDistributionsController to fetch earnings distribution data for rooms.
- Introduced ScreenShareReportsController for reporting screen share incidents.
- Established SubscriptionSeasonsController to provide current subscription season details and rewards.
- Launched UgcPurchasablesController for managing user-generated content purchasables, including bulk operations.
- Added new data entities for customization and room economy, including custom avatar items, room currencies, and UGC purchasables.
This commit is contained in:
Alexa
2026-06-22 16:08:23 +03:00
parent 157cc457a9
commit 70980bf3b6
53 changed files with 4470 additions and 91 deletions
@@ -2,31 +2,17 @@ using DorkNet.Server.Compat;
namespace DorkNet.Server.Versions.Late2020;
/// <summary>The "Late 2020" wire-format generation: covers all Rec Room
/// builds from the autumn 2020 schema migration through the end of the
/// year. The 2020.12.18 build is the canonical member; if/when we add
/// 2020.10 or 2020.11 builds and find their wire shapes are identical,
/// we just list them in <see cref="VersionKeys"/> here — no new code.
///
/// <para>Currently this plugin is a marker: it declares which version
/// keys belong to the generation, but no strategy services are
/// registered yet. As controllers start branching on
/// <see cref="HttpContextExtensions.ClientVersion"/>'s
/// <c>Generation</c>, the strategies that get extracted will register
/// themselves through <see cref="RegisterStrategies"/> with a
/// keyed-DI binding so the right implementation resolves per
/// request.</para>
/// <summary>Version marker for the 2023.03.21 client branch. This
/// branch is intentionally single-client: it does not advertise or
/// serve older 2020 build keys.
/// </summary>
public sealed class Late2020VersionPlugin : IVersionPlugin
{
public const string GenerationKey = "Late2020";
public const string GenerationKey = "March2023";
public IReadOnlyCollection<string> VersionKeys { get; } = new[]
{
// Verified working against this server. The canonical
// private-deployment build the codebase has been developed
// against since the move to localhost.
"december_2020_12_18",
"march_2023_03_21",
};
public string Generation => GenerationKey;