23 lines
890 B
TypeScript
23 lines
890 B
TypeScript
import type { UserInfo } from '@horux/shared';
|
|
|
|
/**
|
|
* Threshold de logins tras el cual el onboarding deja de mostrarse aunque el
|
|
* user no haya completado todos los pasos. Cubre el caso "el user prefiere
|
|
* ignorar el onboarding y ya pasaron varias sesiones".
|
|
*/
|
|
export const ONBOARDING_LOGIN_THRESHOLD = 4;
|
|
|
|
/**
|
|
* Decide si la pantalla de onboarding debe mostrarse en el siguiente redirect
|
|
* post-login. Reglas (lo que pase primero):
|
|
* 1. El user ya hizo dismiss explícito → no se muestra
|
|
* 2. El user ya acumuló > THRESHOLD logins → no se muestra
|
|
* 3. Caso contrario → se muestra
|
|
*/
|
|
export function shouldShowOnboarding(user: Pick<UserInfo, 'loginCount' | 'onboardingDismissedAt'> | null): boolean {
|
|
if (!user) return false;
|
|
if (user.onboardingDismissedAt) return false;
|
|
if ((user.loginCount ?? 0) > ONBOARDING_LOGIN_THRESHOLD) return false;
|
|
return true;
|
|
}
|