Skip to content

Shop

The launcher's Shop tab (/launcher/shop) only renders when siteInfo.shop_enabled is true. It mirrors the public web portal storefront with the launcher chrome.

Layout

  • Left column (col-md-3): pinned categories list (search field on top, scrollable nav below). Categories load from /api/v1/shop/categories and respect the operator's i18n labels per locale.
  • Right column (col-md-9): pinned heading with category title + visible-item count, scrolling RcScroll item grid. Cards stretch to equal height per row and full column width.

The dual scroll surfaces (categories + items) keep the headings visible while the user browses, mirroring the home page's two-pane layout.

Source of truth

  • Categories: shop.categories (key, label, label_i18n JSONB, sort_order). Editable by admins via PUT /api/v1/admin/shop/categories/:key.
  • Items: shop.items with fields for price (Splintertokens), enabled, hidden, applies_to_game_ids[], featured, payload JSONB.

Token balance

The token pill in the launcher toolbar (only with tokens_enabled) reads /api/v1/shop/balance. Click jumps to the shop. After redeeming a keycode in the title-bar dropdown the balance refreshes immediately.

Redeem code

A keycode redeems via POST /api/v1/me/redeem. The launcher account dropdown opens a small RcScroll dialog with a single XXXX-XXXX-XXXX-XXXX input; on success it shows the credited days / tokens / etc.