Pular para o conteúdo principal

User Preferences

A seção "Preferências" da conta do usuário (/user/config) permite que cada jogador escolha como quer experimentar a plataforma. As preferências são persistidas pela API, lidas do userInfo em todo login subsequente e podem alterar o comportamento da interface.

A feature inteira é opt-in por brand: quando desligada, nada muda em relação ao comportamento histórico.

Preferências disponíveis

PreferênciaValoresEfeito
landingPagehome, casino, casino_live, sports, sports_liveDefine para onde o usuário é levado após o login

A lista é estendida ao longo do tempo (modo escuro, idioma preferido, etc.). Cada nova preferência segue o mesmo padrão.

Quando o redirect de landing page roda

O redirect para a preferência só dispara quando as duas condições são verdadeiras:

  1. A brand tem a feature ligada (featuresConfig.userPreferences = true).
  2. O usuário está logando a partir da home (/).

Exemplos:

CenárioComportamento
Brand com a flag, usuário na home, prefere "Cassino Ao Vivo"Após login → /games/live
Brand com a flag, usuário na home, sem preferência salvaApós login → permanece em /
Brand com a flag, usuário em /games/<provider>/<game>Permanece no jogo (não redireciona)
Brand com a flag, usuário em /promotionsPermanece em promotions
Brand sem a flagComportamento histórico — sem redirect implícito

A regra "só redireciona da home" é proposital: um usuário que clica no botão de login estando numa página de jogo, sportsbook ou promoção provavelmente está ali por um motivo, e mover ele pra outra página seria ruim de UX.

Como ativar

A feature é controlada pela flag userPreferences em app/config/features/features.ts (e seus overrides por brand).

// overrides/<sua-brand>/app/config/features/features.ts
export const featuresConfig: AppFeatureFlags = {
// ... outras flags ...
userPreferences: true, // ← liga a feature
};

Quando ligada:

  • Bloco "Preferências" aparece em /user/config, antes de "Contratos".
  • O redirect pós-login passa a respeitar a preferência salva (com a regra da home).

Quando desligada (default): nada renderiza, nenhum redirect acontece.

:::warning Propagação obrigatória nos overrides O sistema de override de brand substitui o arquivo features.config.ts inteiro (não faz deep-merge). Adicionar userPreferences apenas no default sem propagar para os overrides existentes faz com que essas brands recebam undefined no campo, o que pode causar comportamento inconsistente. Sempre copie o valor (true ou false) para cada override. :::

Customização

Traduções

As labels e descrições da seção vivem no namespace user do @cactus-agents/i18n, sob preferences:

{
"preferences": {
"title": "Preferências",
"landing_page": {
"label": "Tela inicial após o login",
"casino": "Cassino",
"casino_live": "Cassino Ao Vivo",
"sports": "Esportes",
"sports_live": "Esportes Ao Vivo",
"home": "Início"
}
}
}

Para sobrescrever pontualmente em uma brand, use o sistema de overrides de i18n (app/locales/overrides/).

Visual

A seção usa o componente RadioField (app/components/ui/RadioField.tsx) — radio reutilizável tema-aware. Ele respeita os tokens do tema (primary, texts, bg-secondary) automaticamente, então segue a identidade visual da brand sem ajustes adicionais.

A grid das opções é grid-cols-2 md:grid-cols-3 (2 colunas no mobile, 3 colunas no desktop). Para alterar o layout (ex: lista vertical, slider, etc.), edite app/components/user/account/PreferencesSection.tsx no fork.

Limites

  • A lista de valores aceitos por preferência é fixa no SDK (@cactus-agents/accounts). Forks não podem expandir o whitelist sem republicar o core. Isso é proposital — o BFF aceita qualquer JSON em preferencies, então o front é o único guard contra dados inconsistentes ou maliciosos chegando ao banco.
  • Se você precisa de uma preferência específica da sua brand, abra um pedido para o time da plataforma.